目录
- 继承概述、使用继承的好处
- 总结
 
- 继承的设计规范、内存运行原理
- 总结
 
- 继承的特点
- 总结
 
- 继承后:成员变量、成员方法的访问特点
- 总结
 
- 继承后:方法重写
- 继承后:子类构造器的特点
- 总结
 
- 继承后:子类构造器访问父类有参构造器
- 总结
 
- this、super使用总结
继承概述、使用继承的好处

package com.zixin.d5_extends;
public class People {
    public void run(){
        System.out.println("人会跑~~");
    }
}
package com.zixin.d5_extends;
public class Student extends People{
}
package com.zixin.d5_extends;
public class Test {
    public static void main(String[] args) {
        Student s =new Student();
        s.run();
    }
}

 
总结
1.什么是继承?继承的好处是啥?
- 继承就是java允许我们用extends关键字,让一个类和另一个类建立起一种父子关系。
- 提高代码复用性,减少代码冗余,增强类的功能扩展性。
2.继承的格式
- 子类 extends 父类
3.继承后子类的特点?
- 子类继承父类,子类可以得到父类的属性和行为,子类可以使用。Java中子类更强大
继承的设计规范、内存运行原理

 
package com.zixin.d6_extends_test;
public class People {
    private String name;
    private int age;
    public void queryCourse(){
        System.out.println(name + "再查看课表~~");
    }
    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;
    }
}
package com.zixin.d6_extends_test;
public class Student extends People {
    public void writeInfo(){
        System.out.println(getName()+"写下了:学习语法,好开心~~");
    }
}
package com.zixin.d6_extends_test;
public class Test {
    public static void main(String[] args) {
        Student s =new Student();
        s.setName("嘻哈");
        s.setAge(999);
        System.out.println(s.getName());
        System.out.println(s.getAge());
        s.queryCourse();
        s.writeInfo();
    }
}

总结
1.继承需要满足什么样的设计规范?
- 子类们相同特征(共性属性,共性方法)放在父类中定义。
- 子类独有的的属性和行为应该定义在子类自己里面。
继承的特点

 
package com.zixin.d7_extends_feature;
public class Test {
    public static void main(String[] args) {
        Tiger t = new Tiger();
//        t.eat();
    }
}
class  Animal{
    private void eat(){
        System.out.println("动物要吃东西~");
    }
}
class Tiger extends Animal{
}

package com.zixin.d7_extends_feature;
public class Test {
    public static void main(String[] args) {
        Tiger t = new Tiger();
//        t.eat();
        System.out.println(Tiger.location);
    }
}
class  Animal{
    private void eat(){
        System.out.println("动物要吃东西~");
    }
    public static String location = "长隆动物园";
}
class Tiger extends Animal{
}

 
 
 
总结
1.继承有哪些特点?
 子类可以继承父类的属性和行为,但是子类不能继承父类的构造器。
 Java是单继承模式:一个类只能继承一个直接父类。
 Java不支持多继承、但是支持多层继承。
 Java中所有的类都是Object类的子类。
继承后:成员变量、成员方法的访问特点

package com.zixin;
public class d8_extends_field_method {
    public static void main(String[] args) {
        Dog d =new Dog();
        d.run();
        d.lookDoor();
        d.showName();
    }
}
class Animal{
    public String name = "动物名";
    public void run(){
        System.out.println("动物可以跑~");
    }
}
class Dog extends Animal{
    public String name="狗名";
    public void lookDoor(){
        System.out.println("狗可以看门");
    }
    public void showName(){
//        String name ="局部名";
        System.out.println(name);
        System.out.println(this.name);
        System.out.println(super.name);
        super.run();
        run();
    }
    public void run(){
        System.out.println("狗跑的贼快~");
    }
}
总结

继承后:方法重写

package com.zixin.d9_extends_override;
public class Test {
    public static void main(String[] args) {
        NewPhone iphone = new NewPhone();
        iphone.call();
        iphone.sendMsg();
    }
}
class NewPhone extends Phone{
    @Override
    public void call(){
        super.call();
        System.out.println("开始视频童话");
    }
    @Override
    public void sendMsg(){
        super.sendMsg();
        System.out.println("发送有趣的图片~");
    }
}
class Phone{
    public void call(){
        System.out.println("打电话~");
    }
    public void sendMsg(){
        System.out.println("发短信~");
    }
}

 
继承后:子类构造器的特点

package com.zixin.d10_extends_constructor;
public class Animal {
    public Animal(){
        System.out.println("父类Animal无参构造器被执行");
    }
}
package com.zixin.d10_extends_constructor;
public class Dog {
    public Dog(){
        System.out.println("子类Dog无参数构造器被执行~");
    }
    public Dog(String name){
        System.out.println("子类Dog有参数构造器被执行");
    }
}
package com.zixin.d10_extends_constructor;
public class Test {
    public static void main(String[] args) {
        Dog d1 = new Dog();
        System.out.println(d1);
        System.out.println("-------");
        Dog d2 = new Dog("土狗");
        System.out.println(d2);
    }
}
总结
1.子类继承父类后构造器的特点是什么样的?
 子类中所有的构造器默认都会先访问父类中无参的构造器,再执行自己。
继承后:子类构造器访问父类有参构造器

package com.zixin.d11_extends_constructor;
public class People {
    private String name;
    private int age;
    public People() {
    }
    public People(String name, int age) {
        this.name = name;
        this.age = age;
    }
    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;
    }
}
package com.zixin.d11_extends_constructor;
public class Teacher extends People{
    public Teacher(){
    }
    public Teacher(String name , int age){
        super(name,age);
    }
}
package com.zixin.d11_extends_constructor;
public class Test {
    public static void main(String[] args) {
        Teacher t = new Teacher("王阳明",14);
        System.out.println(t.getAge());
        System.out.println(t.getName());
    }
}
总结
1、super调用父类构造器的作用是什么?
 通过调用父类有参数构造器来初始化继承自父类的数据
this、super使用总结

 
package com.zixin.d12_this;
public class Student {
    private String name;
    private String schoolName;
    public Student(){
    }
    public Student(String name){
        this(name,"之见者");
    }
    public Student(String name, String schoolName) {
        this.name = name;
        this.schoolName = schoolName;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSchoolName() {
        return schoolName;
    }
    public void setSchoolName(String schoolName) {
        this.schoolName = schoolName;
    }
}
package com.zixin.d12_this;
public class Test {
    public static void main(String[] args) {
        Student s1 =new Student("许青","七血瞳");
        System.out.println(s1.getName());
        System.out.println(s1.getSchoolName());
        Student s2 = new Student("张三丰");
        System.out.println(s2.getName());
        System.out.println(s2.getSchoolName());
    }
}



















