Java面向对象-继承(extends)

1.   面向对象的三大特性之二-继承(extends)

注意:构造器不能被继承!

父类的Private属性也不能被继承

 

注意!如果父类的构造函数是有参的,没有单独写无参构造函数(有有参的系统就不会自己再搞个无参的了),则子类必须手写有参构造方法,否则会报错,即父类构造器有参时,子类不能使用默认无参构造方法!

1)    继承的层次结构

Java中Object为所有类的父类,就算编码时没有写,java也会默认给所有类继承Object的所有属性;

一个父类可以有多个子类,一个子类只能有一个父类

2)    类继承的语法

public class Dog extends Animal{

与C++的不同:

Java中,一个类只能继承一个父类,即单继承!-》这个与C++不一致!

3)    重写- override

子类可以改写父类的的方法、命名以及与父类成员变量同名的成员变量

 

覆盖原则:

a) 覆盖方法必须有相同的方法名称、输入参数以及返回值类型

b) 子类不能比父类有更严格的访问权限

否则会报错:

 

c)  覆盖方法不能比父类方法抛出更多的异常

 

继承代码示例:

父类:

public class Animal {
    public int weight;
    private String name;

    public void setWeight(int w){
        weight = w;
    }
    public int getWeight(){
        System.out.println("getWeight:"+weight);
        return weight;

    }

    protected void eat(){
        System.out.println(
                "我会吃"
        );
    }
    public Animal(){
        System.out.println("父类animal的构造器");
    }

}

子类:

public class Dog extends Animal{

    public Dog(){
        System.out.println("子类Dog的构造器");}

  }

实现:

public class Initial {

    public static void main(String[] args) {
        System.out.println("##");
        Dog dog = new  Dog();
        dog.setWeight(23);
        dog.eat();
    }

}

 

posted on 2021-06-30 17:59  cStream  阅读(301)  评论(0)    收藏  举报