面向对象(继承)

面向对象(继承)

java中继承是完全继承,除了私有化的

继承提高代码重复利用率

语法:extends 继承

子类 extends 父类

public class A extends B{}

  • java继承的特性

    1. 单继承,间接多继承

package com.szwollf.Day07.Test2;
​
public class Animal {
    String eat;
    public void move(){
        System.out.println("我会动");
    }
}
 

package com.szwollf.Day07.Test2;
​
public class Person extends Animal {
    int strature;
}
 

package com.szwollf.Day07.Test2;
​
public class Chinese extends Person{
    public static void main(String[] args) {
​
        Chinese c=new Chinese();
        c.eat="嚼";
        c.strature=180;
        System.out.println(c.eat+c.strature);
    }
}

相当于Chinese拥有两个类的所有成员变量和成员方法

  • java 中规定,子类继承父类,除构造方法和被private 修饰的数据不能继承外,剩下都可以继承。 封装的属性可以通过继承get和set查询和修改

  • 构造方法不能被继承,是调用关系

    父类要么无参有参都写,要么都不写(隐式无参),子类只调用父类无参,如果只写有参,会报错

package com.szwollf.Day07.TestStructure;
​
public class Fa {
    String name;
    public Fa(){
        System.out.println("父类无参");
    }
    public Fa(String name){
        System.out.println(name);
    }
}
 

package com.szwollf.Day07.TestStructure;
​
public class Sun extends Fa{
    public Sun(){
        System.out.println("子类无参");
    }
    public Sun(String name){
        System.out.println(name);
    }
​
    public static void main(String[] args) {
        Sun s1=new Sun();
        Sun s2=new Sun("牛逼");
//        Fa f=new Fa("父类有参");
    }
}

子类创建对象之前,必须先调用父类构造函数,因为先创建父类对象

  • java中继承分两种

  • 隐式继承,所有类如果没有extends关键字,就隐式Object

  • 显示继承,extends关键字(重点)

  • 所有类都直接或者间接继承Ob'j'e'c't

  • 继承缺点:代码的耦合度太高

A extends B extends C exnteds D

D类出了问题,A B C 全遭殃

  • 静态的成员是否能被继承?

静态的成员是可以被继承,有继承关系

package com.szwollf.Day07.TestStructure;
​
public class Fa {
    static char gender;
}
 

package com.szwollf.Day07.TestStructure;
​
public class Sun extends Fa{
    public Sun(char gender){
        System.out.println(gender);
    }
​
    public static void main(String[] args) {
        Sun s2=new Sun('男');
    }
}

总结:显示继承

  • 继承用extends关键字 A extends B A叫子类,派生类,扩展类 B叫父类,基类,超类,根类

  • 子类继承父类,继承父类所有的属性和方法,除了私有化的,构造函数

  • 创建一个子类对象,首先创建父类对象

  • 继承都是单继承,间接的多继承

  • 继承解决了代码重复 遗留耦合度高的问题

  • 静态的是可以被继承,静态存放在方法区

posted @ 2019-09-27 21:30  Wollf  阅读(158)  评论(0)    收藏  举报