文章目录[隐藏]
特点:
兔子和羊属于食草动物类,狮子和豹属于食肉动物类。
食草动物和食肉动物又是属于动物类。
所以继承需要符合的关系是:is-a,父类更通用,子类更具体。
虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。
class Animal{
//公共的属性和方法
}
class Dog extends Animal{
//子类特有的属性和方法
}
class Cat extends Animal{
}
当子类继承父类的时候子类可以访问父类非私有成员
父类不可以访问子类特有成员,哪怕是共有的
/**
* 方法重载:
* 1、同一个类中
* 2、方法名相同,参数列表不同(参数顺序、个数、类型)
* 3、方法返回值、访问修饰符任意
*/
语法规则:
方法返回值返回值和访问修饰符是可以在允许的一定范围内进行变化! 当访问值是void或基本数据类型时,不允许修改,必须完全相同;当返回值是引用类型时,可以是父类或者是子类
/**
* 方法重写:
* 1、有继承关系的子类中编写的
* 2、方法名相同,参数列表相同(参数顺序、个数、类型)
* 3、访问修饰符,访问范围需要大于等于父类的访问范围
* 4、与方法的参数名无关
*/
当子类重写父类的方法后,子类对象调用的是重写后的方法
修饰符 | 当前类 | 同一包内 | 子孙类(同一包) | 子孙类(不同包) | 其他包 |
---|---|---|---|---|---|
public | Y | Y | Y | Y | Y |
protected | Y | Y | Y | Y/N | N |
default | Y | Y | Y | N | N |
private | Y | N | N | N | N |
private
:只允许在本类中访问
public
:允许在任意位置访问
protected
:允许在当前类、同包子类/非子类、挎包类调用、夸包非子类不允许访问
default
:允许在当前类、挎包子类/非子类不允许,同包子类/非子类允许
super:父类对象的引用
//父类的构造方法是不允许被继承,不允许重写
public Animal(){
}
访问修饰符不影响成员加载顺序,跟书写位置有关。
父类的构造方法是不允许被继承,不允许重写,但是会影响子类对象的实例化
子类构造默认调用父类的无参构造方法,可以通过super()调用父类允许访问的其他构造方法
super.print();
super.name;
super();
this和super不能在静态代码块中使用
this:代表当前对象
super:代表父类对象
public static void Say(){
// this.month=2;
// super.name="aa";
}
this和super 不能同时出现。