面向对象特征:继承
方法的重写(Override)
四种访问权限修饰符
关键字super
子类对象实例化过程
Object类、包装类
/*
* oop 特征二:继承性
* 1.为什么要设计继承性?
* 2.class A extends B 实现类的继承
* 子类:A 父类(基类、SuperClass):B
*
* 3.子类继承父类以后,父类中声明的属性、方法(子类获取到父类的属性name,age但是不能用因为权限限制)
* 明确:父类中有私有的属性或方法时,子类同样可以获取到,只是由于封装性,子类无法直接调用
* 子类除了通过继承获取父类的结构,还可以自己定义自己的结构
*
* extends: 子类是对父类功能的”扩展“,子类不是父类的子集;
*
* 4.Java的继承只能单继承!一个类只能继承一个类。一个父类可以有多个子类
* 5.子类和父类时相对概念
*/
public class TestExdents {
public static void main(String[] args) {
Student s = new Student();
s.eat();
Student s1 = new Student("PerkingUnivercity");
System.out.println(s1.getName()+s1.getAge());
Worker w = new Worker();
w.eat(); // 子类调用父类的方法
}
}
class Student extends Person {
/*
* super可以用来修饰属性、方法、构造器
* 1)当子类与父类中同名属性时,可以通过super.属性显式的调用
* 调用子类同名属性 this.属性
* 2)当子类重写父类方法 (重名的)super.方法名()
*
* 3)super修饰构造器:通过在子类使用super(形参列表)来显示的调用指定的构造器
* >在构造器内部:“super(形参列表)”必须声明在首行
* >super 和this 只能有一个存在
* >当构造器中不显示的调用this() 或super() 默认调用的是父类空参的构造器
* >建议:设计一个类时,尽量提供一个空参的构造器
*/
private String choolName;
int id; //子类与父类重名id
public Student() {
super(); //只是调用父类的构造器
}
public Student (String schoolName) {
super("李雷",23); //调用父类的方法
this.choolName = schoolName;
System.out.println(schoolName);
}
public void show() {
System.out.println(this.id );//this.id || id 子类id
System.out.println(super.id); // 父类id
}
}
子类对象实例化过程
public class SubObjectInitProcess {
public static void main(String[] args) {
dog d = new dog();
d.setAge(10);
d.setName("花花");
d.setHostName("小明");
System.out.println("Name: "+d.getName()+"age: "+d.getAge()+"HostName:"+d.getHostName());
}
}
class Creator{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Creator () {
super();
System.out.println("this is creator's constructor");
}
}
class Animal extends Creator{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Animal() {
super();
System.out.println("this is Animal Constructor");
}
}
class dog extends Animal{
private String hostName;
public String getHostName() {
return hostName;
}
public void setHostName(String hostName) {
this.hostName = hostName;
}
public dog() {
super();
System.out.println("this is dog's Contructor");
}
}