封装:
对象代表什么,就得封装对应的数据,并提供数据对应的行为
继承:
Java只支持单继承,不支持多继承,但支持多层继承--每一个类都直接或间接的继承于Object
-
权限修饰符 - private
被私有,只能在本类中访问
子类只能访问父类中非私有的成员
-
构造方法:
父类的构造方法不能被子类继承 - 如果子类可以继承,违背了方法的构造规则(比如重名)
子类中所有的构造方法默认先访问父类中的无参构造,再执行自己
子类的构造方法第一行会默认有一个super(),不写也会存在 -这就是为什么如果删掉父类的空参构造方法,子类的空参构造方法会报错
但要调用父类的有参构造,就要手动写super,并且必须在第一行
public class fu {
private String name;
private int age;
public fu() {}
public fu(String name,int age){
this.name = name;
this.age = age;
}
}
class zi extends fu{
private String gender;
public zi(){}
public zi(String name,int age,String gender){
super(name,age);
this.gender = gender;
}
}
-
成员变量
不管是私有的还是非私有的,子类都可以继承父类
但是私有的成员变量子类不能直接使用(set和get方法)
访问特点
就近原则:使用最近的一个变量
(局部 -> 本类 -> 父类)
this > 本类的变量
super > 父类的变量
System.out.println(name); //从局部开始往上找
System.out.println(this.name); //从本类成员开始往上找
System.out.println(super.name); //从父类成员开始往上找
-
成员方法:
如果方法可以被添加到虚方法表,就可以被继承,否则不能被继承
虚方法表:
非private/static/final的方法 父类会放进虚方法表给子类继承,子类会在此基础上再添加自己类中的虚方法给下一个子类
访问特点:
同访问成员变量一样,采用就近原则
方法的重写:
当父类的方法不能满足子类现在的需求,需要进行方法重写
只有被添加到虚方法表的方法,才能被重写
重写的方法尽量和父类保持一致
建议重写的方法都加上@Override
public class fu {
public void tell(){
System.out.println("父类说话");
}
}
class zi extends fu{
@Override
public void tell(){
System.out.println("子类说话");
}
}
标签:name,继承,子类,概念,一些,父类,方法,public
From: https://www.cnblogs.com/wishcyz/p/17181903.html