Java 的小白学习笔记九(面向对象-继承)

继承

继承特性

1. 子类拥有父类非private的属性,方法

2. 子类可以拥有自己的属性和方法

3. 子类可以用自己的方式实现父类的方法

4. 单继承,可以多重继承

继承关键字

extends

//父类

class Animal2{

    private String name;

    private int age;

    public Animal2 (String n,int a) {

        this.name = n;

        this.age = a;

    }

    public void hello() {

        System.out.println("你好,我是 "+name);

    }

}

//子类

class Dog2 extends Animal2{ //继承使用extends关键字

    public Dog2(String n,int a){

        super(n,a);

    }

}

implements

implements关键字可以变相使Java具有多继承的特性,使用范围为类继承接口的情况,一个类可以同时继承多个接口

public interface A {

    public void eat();

}

public interface B {   

    public void show();

}

public class C implements A,B {

    public void eat(){ }

    public void show(){}

}

super与this

super关键字用来实现对父类成员的访问,引用当前对象的父类,this关键字指向自己的引用

class Animal {

    void eat() {

        System.out.println("animal : eat");

  }

}

class Dog extends Animal { 

    void eat() {   

        System.out.println("dog : eat");

  }

    void eatTest() {   

        this.eat();  // this 调用自己的方法            super.eat();  // super 调用父类方法 

    }

}

public class Test { 

    public static void main(String[] args) {

    Animal a = new Animal();

    a.eat();

    Dog d = new Dog();

    d.eatTest();

  }

}

final

用final关键字声明类,该类不能被继承;声明方法,该方法不能被子类重写

若实例变量被声明为final,这个变量就不能被修改。被声明为final类的方法自动被声明为final,但实例变量不是final 

构造器

子类不能继承父类的构造器,如果父类的构造器有参数,必须在子类的构造器中显示的通过super关键字调用父类构造器,并带有适当的参数列表

public class SuperClass {

private int age;

public SuperClass(int age){

this.age = age;

System.out.println("SuperClass:"+this.age);

}

}

public class SubClass extends SuperClass {

private int age;

public SubClass(int age){

super(5);

this.age = age;

System.out.println("sbuclass:"+this.age);

}

public static void main(String[] args) {

SubClass s = new SubClass(2);

}

}

你可能感兴趣的:(Java 的小白学习笔记九(面向对象-继承))