对象09:什么是继承
extands 修饰关键字,扩展,继承
继承是类和类之间的关系。子类和父类之间在意义上应该具有“子类 is a 父类”
Java中只有单继承,没有多继承。“一个爸爸有多个儿子,一个儿子只有爸爸”: Object——>Persion
|——>Studnt
|——>Teacher
package oop.demo05; public class Application { public static void main(String[] args) { Student student = new Student(); student.say(); } }
package oop.demo05; //Persion是父类,Student和Teacher是派生类 // 子类继承了父类,就拥有了父类的全部方法 //public 公共 //protected 受保护的 //default 常规,默认 //private 私有,子类不能继承 //在java中所有的类 都默认继承Object类 // CTRL+ H 快捷键 查看层次结构 public class Persion { public void say(){ System.out.println("说了一句话"); } }
package oop.demo05; public class Student extends Persion{ //extends 继承了Persion的公共属性和公共方法 Student是Persio }
package oop.demo05; public class Teacher extends Persion{ //extends 继承了Persion Teacher是Persion }
对象10:Super详解(继承)
super 注意点
- super调用父类构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或者构造的方法中
- super和this不能同时调用构造方法
VS this
代表的对象不同:
this :本身吊桶的是当前类的对象
super:是指父亲类的对象的应用
前提:
this:没有继承也可以用
super;只能在继承条件才可以使用
构造方法
this(); 调用本类的构造
super();调用父类的构造
package oop.demo05; public class Application { public static void main(String[] args) { Student student = new Student(); student.say(); student.test("李白"); student.test1(); } }
package oop.demo05; //Persion是父类,Student和Teacher是派生类 // 子类继承了父类,就拥有了父类的全部方法 //public 公共 //protected 受保护的 //default 常规,默认 //private 私有,子类不能继承 //在java中所有的类 都默认继承Object类 // CTRL+ H 快捷键 查看层次结构 public class Person { public void say(){ System.out.println("说了一句话"); } public void Person() { System.out.println("Person无参执行"); } protected String name = "zhangsan"; public void print(){ System.out.println("Person"); } }
package oop.demo05; public class Student extends Person{ //extends 继承了Persion的属性 Student是Persio private String name = "libai"; public void print(){ //执行顺序,先父后子 //隐藏代码,调用了父类的无参构造 //父类无参,子类的也无参 System.out.println("Student"); } public Student() { System.out.println("Student无参执行"); } public void test(String name){ System.out.println(name); //李白 System.out.println(this.name); //libai System.out.println(super.name); //zhangsan } public void test1(){ System.out.println("================="); print(); //student this.print(); //student super.print(); //Persion super读取了父类的print方法。如果print方法被声名为private将不回被读出 } }