一、类继承
关键词:
extends只有公有继承,只有单(即不能同时继承A和B)。
super:用来调用基类的构造器,如果不写就默认调用基类的无参构造器(基类没有无参构造器就报错)
class Main {
public static void main(String[] args)
{
//dog a("狗",10);//我去,看了半天没看出来,Java对象只能new
dog a=new dog("哮天犬",1);
a.eat();
}
}
class animals{
private String name;
private int id;
public animals(String name,int id)
{
this.name=name;
this.id=id;
}
public void eat()
{
System.out.println(name+id+"正在吃");
}
class dog extends animals{
public dog(String name,int id)
{
super(name,id);
}
}
继承特点:
1、子类拥有父类非 private 的属性、方法。
2、子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
3、子类可以用自己的方式实现父类的方法。(重写)
子类内存中虽然有基类所有东西,但基类private的东西它是用不了的,只有通过基类提供的接口来使用那些基类私有的东西。
对于name和id,到底继承没继承,用继承定义吧确实没继承,但dog确实用name和id来标识自己的对象了???
二、接口继承
关键字:implements(工具)
使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口
public interface A {
public void eat();
public void sleep();
}
public interface B {
public void show();
}
public class C implements A,B {
}
final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写
构造器子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。