Java中的继承

  1. 使用关键字extends,子类继承父类,或者父类全部方法和属性。
  2. Java中的类只能有一个直接父类,即单继承。如果定义一个Java类,并未明确指出它的父类,则它的父类默认的是java.lang.Object类。
  3. 如果父类的某个方法不能满足子类的需求,则可以重写父类的方法。重写父类方法需要遵循两同两小一大原则,“两同”即方法名相同、形参列表相同;“两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等;“一大”子类方法的访问权限应比父类方法的访问权限更大或相等。
  4. 如果需要在子类方法中调用父类被覆盖的实例方法,可以用super关键字来限定方法。
  5. static关键字修饰的方法属于类的,而不是属于类的实例的,该方法的调用者可以是个类,而不能是个对象。
  6. 方法重载和方法重写是不一样的,即overload和override的区别。方法重写发生在父类和子类之间,遵循“两同两小一大”原则;而方法重载指的是方法名相同,但形参列表不同的方法。
  7. Java的子类不能继承父类的构造器,子类构造器调用父类构造器分为几种情况:(1)子类构造器可以调用父类构造器的初始化代码,用super关键字来实现,在子类构造器的第一行代码处显式调用。(2)子类构造器执行体的第一行代码使用this显式调用本类中重载的构造器,执行本类中另一个构造器时便会调用父类构造器。(3)子类构造器中既没有this也没有super,系统将会在执行子类构造器之前隐式调用父类无参的构造器。无论上述三种方法中的哪种,系统总是先执行父类的构造器。
//Wolf.java中的代码
public class Creature{
	public Creature(){
		System.out.println("Creature类无参的构造器");
	}
}

public class Animal extends Creature{
	public Animal(String name){
		System.out.println("Animal类带一个参数的构造器");
	}
	
	public Animal(String name,int age){
		//使用this关键字来调用子类中重载的构造器
		this(name);
		System.out.println("Animal类带两个参数的构造器");
	}
}
public class Wolf extends Animal{
	public Wolf(){
		//显式调用父类有两个参数的构造器
		super("灰太狼", 3);
		System.out.println("显式调用父类有两个参数的构造器");
	}
}

运行结果如下:

Creature类无参的构造器
Animal类带一个参数的构造器
Animal类带两个参数的构造器
显式调用父类有两个参数的构造器


发布了22 篇原创文章 · 获赞 15 · 访问量 8万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章