赞
踩
定义:
父类派生出子类,子类继承父类,子类可以获得父类的属性和方法.
使用:
- extends关键字,声明子类继承父类.
- super关键字,用于指代父类对象(创建子类对象之前,会先创建父类对象)
- super()代表父类构造方法,super.方法名()调用父类方法,super.属性名调用父类的属性
例:
/**
* 人类(父类)
*/
public class Person { // 声明类名,一个java文件中只能有一个被public修饰的类,并且这个类的类名和文件名一致。
// 实体类的属性,用来描述对象的特征。
private String name;
private int age;
private char sex;
private String color;
// 构造方法,用于实例化对象并初始化赋值。
public Person() {
}
public Person(String name, int age, char sex, String color) {
// this指代的是当前对象,构造方法即将创建的这个对象,或者方法的调用对象。
this.name = name;
this.age = age;
this.sex = sex;
this.color = color;
}
// getters/setters方法,用于操作私有属性,还可以完成对传入值的合法性校验.
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
// 类的方法,用于描述对象的行为.
public void eat() {
System.out.println("吃东西");
}
public void sleep() {
System.out.println("睡觉");
}
// 重写自Object类,用于将对象的所有属性格式化成一个字符串,便于编程过程中的调试.
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", sex=" + sex + ", color=" + color + "]";
}
}
/**
* 学生类(继承父类)
*/
public class Student extends Person {
public Student() {
super(); // 父类的无参构造
}
public Student(String name, int age, char sex, String color) {
// super指代父类对象
super(name, age, sex, color); // 父类的有参构造
}
public void study() {
System.out.println("学习敲代码");
}
@Override
public void sleep() {
System.out.println("好好学习,睡什么睡");
}
public void sleepFromSuperclass() {
// 通过super关键字调用父类的其他方法
super.sleep();
}
//覆盖或者重写父类的方法
public String toString() {
return "Student [name=" + getName() + ", age=" + getAge() + ", sex=" + getSex() + ", color=" + getColor() + "]";
}
}
- java的继承是单继承,一个子类只能继承一个父类。
- 子类继承父类,创建子类对象,会先执行父类构造方法,再执行子类构造方法,无论是子类的有参还是无参,默认都会调用父类的无参构造。
- 子类不可以继承父类的私有属性、私有方法、构造方法、他包父类的默认属性和默认方法。
- 如果子类重写了父类方法,子类对象将会调用子类方法。
- 父类是抽象类,子类必须实现所有抽象方法,否则子类也是一个抽象类。
- 被final修饰的类,不能被继承,被final修饰的方法不能被重写。
- 如果一个类没有显示的继承父类,默认继承超级父类Object
引申以下概念:
对继承来的父类方法进行重写
使用:
- 发生在父子类中
- 方法名相同,参数列表相同,返回值类型相同
- 权限修饰符范围不能比父类小
- this代表本类对象的引用,super代表父类对象的引用
- this()代表本类构造方法,super()代表父类构造方法
- this和super代表构造方法,只能在构造方法中使用,并且必须是第一行,不能同时存在。
访问修饰符 | 含义 | 作用范围 |
---|---|---|
public | 公开的 | 整个项目 |
protected | 受保护的 | 本类、同包其他类、跨包子类 |
default | 默认的 | 本类、同包其他类 |
private | 私有的 | 本类 |
一个类继承自一个类它会获得那个类中的所有方法和属性,并且可以有自己的方法和属性
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。