0
点赞
收藏
分享

微信扫一扫

面向对象 5(继承)

SPEIKE 2022-01-11 阅读 61

目录

         1、继承

2、super关键字

3、重写


1、继承

(1-10)

1、类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实 世界更好的建模。

2、提高代码的复用性!

3、extands的意思是“扩展” 。子类是父类的扩展

4、不同的叫法:超类、父类、基类、子类、派生类

5、单继承

 

/*
继承:
表示父类跟子类之间的关系
当两个类或者多个类具备相同的属性和方法的时候,可以提取出来,变成父类,子类可以继承
Java中是单继承一个子类只能有单个父类
子类跟父类是is-a的关系
使用:
1、使用继承的时候需要用extends关键字
2、使用继承关系之后,父类中的属性和方法都可以在子类中进行使用(非私有属性和非私有方法)
3、java中是单继承关系(如果包含多个父类,同时父类中包含重名方法,无法决定该调用谁)
super:是 直接父类  对象的调用
用途:
1、可以在子类中调用父类中被子类覆盖的方法 super,父类方法名称
2、super在普通方法中使用的话,可以任意位置编写
3、super在构造方法中使用的话,就会调用父类的构造方法,一定要将super放在第一行
4、在构造方法中super关键字和this关键字(指的是不能同时使用this关键字调用重载的构造方法)不能同时出现
5、父类中私有的属性和方法都不能被调用,包括构造方法
6、子类的构造方法中都会默认使用super关键字调用父类的无惨构造方法,因此在定义类的时候,无论自己是否定义了其他构造方法,最好将无惨构造方法写上。
7、如何构造方法中显示的制定了super的构造方法,那么无惨的构造方法就不会被调用
总结:
1、在创建子类对象的时候一定会优先创建父类对象
2、所有的java类都具备一个顶级父类 称之为object,是所有类的根类
重写:
必须存在继承关系,当父类中的方法无法满足子类需求的时候可以选择使用重写的方式
        */
public class PetTest {
    public static void main(String[] args) {
        Dog dog=new Dog();
        dog.setName("小白");
        dog.setAge(10);
        dog.setGender("雄性");
        dog.setSound("汪汪~");
        dog.show();
    }
}
public class Dog extends Pet{
  private String sound;
    public Dog(){
    }
public Dog(String name,int age,String gender,String sound) {
        super(name,age,gender);
 this.sound = sound;
         }
 public String getSound () {
            return sound;
        }
        public void setSound (String sound){
            this.sound = sound;
        }
        public void show () {
           // System.out.println("name:"+this.name+"age:"+this.age+"gender"+this.gender+"sound"+this.sound);
            System.out.println("name:" + this.getName() + "age:" + this.getAge() + "gender" + this.getGender() + "sound" + this.sound);
        }

    }

public class Pet {
    private String name;
    private int age;
    private String gender;
    public Pet(){
    }
    public Pet(String name, int age, String gender) {
    }
    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;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
}

 

2、super关键字

1、super是直接父类对象的引用

2、可以通过super来访问父类中被子类覆盖的方法或属性。

3、普通方法:没有顺序限制。可以随便调用。

4、构造函数中:

任何类的构造函数中,若是构造函数的第一行代码没有显式的调用super(...);那么 Java默认都会调用super();作为父类的初始化函数。 所以你这里的super();加不加 都无所谓。

访问父类构造方法

super();

super(name);

访问父类属性

super.name

访问父类方法

super.print();

3、重写

必须要存在继承关系,当父类中的方法无法满足子类需求的时候可以选择使用重写的方法

注意:

重载:@overload

重写:@override

1、重写表示的是子类覆盖父类的方法,当覆盖之后,调用同样的方法的时候会优先调用子类

2、重写的方法名称,返回值类型,参数列表必须跟父类一致

3、子类重写的方法不允许比父类的方法具备更小的访问权限

父类:public  子类public

父类:protected 子类:public protected

父类:default 子类:public  protected  default

 private不能被重写  private  是同一个类

父类的静态方法子类可以进行调用,但是子类不可以重写

 

继承符合is-a关系的设计使用继承

继承是代码重用的一种方式

将子类共有的属性和行为放到父类中

举报

相关推荐

0 条评论