Java之旅_面向对象_继承

继承的概念:

从已有的类派生出新的类称为继承。

子类继承父类的属性和方法,并可进行扩展。继承需要符合的关系是:is-a     (子类是一个父类)

继承关键字:extends

为什么要继承:

提高代码复用性

继承的特性:

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

2.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展

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

4.java的继承是单继承(即一个子类只能继承一个父类);但是可以多重继承,C->B->A . 

继承关键字:

可以使用extends和implements两个关键字实现继承,而且所有的类都是继承于java.lang.Object,当

一个类没有继承的两个关键字,刚默认继承Object类(这个类在java.lang包中,不需要import)

extends关键字:

java是单继承,一个子类只能继承一个父类

public class Animal{
    private String name;
    private int id;
    public Animal(String myName,int myid){
        name = myName;
        id = myid;    
    }
    public void eat(){        
    }
    public void sleep(){        
    }
}
public class dog extends Animal{   
}

implements关键字:

类继承接口,可以继承多个接口(逗号分开),使java变相具有多继承的特性

public interface A{
    public void eat(){
    }
}
public interface B{
    public void sleep(){
    }
}
public class C implements A,B{
    
}

super与this关键字:

super:调用父类的构造方法、方法、数据域

this:指向自己的引用

public class Animal{
    void eat(){
        System.out.println("animal:eat");
    }
}
public class Dog extends Animal{
    void eat(){
        System.out.println("dog:eat");
    }
    void testeat(){
        super.eat();//调用父类的方法
        this.eat();//调用自己的方法
    }
}
public class Test {
    public static void main(String[] args){
        Dog d = new Dog();
        d.testeat();
    }
}

 final关键字:

final修饰类把类定义为不能继承的,即最终类;

final修饰方法则方法不能被子类重写;

构造器:

子类不能继承父类的构造器(构造方法或者构造函数)。

父类构造器带有参数时,子类构造器中必须使用super调用父类构造器,并配适当参数。

父类构造器不带参数时, 系统自动调用父类构造器,子类可不必使用super调用。

class SuperClass{
    SuperClass(){
        System.out.println("SuperClass()");
    }
}
class SubClass extends SuperClass{
    SubClass(){
        System.out.println("SubClass()");
    }
}
public class Test{
    public static void main(String[] args){
        SubClass sub = new SubClass();
    }
}
//运行结果:
SuperClass() SubClass()

 

class SuperClass{
    SuperClass(int n){
        System.out.println("SuperClass(int n)");
    }
}
class SubClass extends SuperClass{
    SubClass(){
        super(100);
        System.out.println("SubClass()");
    }
}
public class Test{
    public static void main(String[] args){
        SubClass sub = new SubClass();
    }
}
//运行结果:
SuperClass(int n) SubClass()

 

父类也称为超类、基类

子类也称为次类,扩展类,派生类

 

posted @ 2018-02-28 21:21  happy_xiaoxiao  Views(110)  Comments(0)    收藏  举报