Java基础之(继承)

1、继承语法规则:

class 子类extends 父类

例如:class Dog extends Animal{...}

继承的好处:子类拥有父类的所有属性和方法,父类中private修饰的属性不能继承。

2、方法的重写:

当子类对继承父类的方法不满意时,可以重写父类继承的方法,当调用方法时,优先调用子类的方法。

重写的规则:返回值类型、方法名、参数类型及个数都要与父类继承的方法相同。

3、继承的初始化顺序:

初始化父类再初始化子类;限制性初始化对象中的属性,再执行构造方法中的初始化。

package com.imooc;

public class Animal {
	public int age=10;
	public String name;
	public Animal(){
		System.out.println("Animal类执行了");
		age=20;
	}	
	public void eat(){
		System.out.println("动物具有吃东西的能力");
	}
}
输出结果是:animal age:20(所以说age=10因为先执行,而被覆盖掉!)

4、final关键字,最终的。可以修饰类、方法、属性和变量。

final修饰类:则该类不允许被继承。

final修饰方法:则该方法不允许被覆盖(重写)。

final修饰属性:则该类的属性不会进行隐式的初始化,所以类的初始化属性必须有值,或者在构造方法中赋值。

final修饰变量:该变量的值只能赋值一次值,即变成常量。

5、super关键字:在对象的内部使用,可以代表父类对象。

访问父类的属性super.age

访问父类的方法super.eat()

package com.imooc;

 public class Animal {
	public int age=10;
	public String name;
	public Animal(){
		System.out.println("Animal类执行了");
		}	
	public void eat(){		
		System.out.println("动物具有吃东西的能力");
	}
}

package com.imooc;

public class Dog extends Animal {
	public int age=20;
	public Dog(){
		System.out.println("Dog类执行了");
	}
	public void eat(){
		System.out.println("狗具有吃骨头的能力");
	} 
	public void method(){
		System.out.println("父类对象的值"+super.age);
		System.out.println("子类对象的值"+age);		
		}
	}

package com.imooc;

public class Initial {
	public static void main(String[] args) {
		Dog dog=new Dog();;	
		dog.method();
	}
}
运行结果:

Animal类执行了
Dog类执行了
父类对象的值10
子类对象的值20

5、子类的构造过程中,必须调用其父类的构造方法。其实就是隐式的使用了super关键字。

package com.imooc;
public class Dog extends Animal {
	public int age=20;
	public Dog(){
		super();
		System.out.println("Dog类执行了");
	}	
}

package com.imooc;
public class Initial {
	public static void main(String[] args) {
		Dog dog=new Dog();	
	}
}
运行结果:

Animal类执行了
Dog类执行了


所以说super()写和不写是相同的结果。

如果子类的构造方法中没有显示的调用父类的构造方法,则系统默认调用父类无参的构造方法。

如果显式调用,super()必须放在子类构造方法的第一行。否则报错:Constructor call must be the first statement in a constructor.

如果子类的构造方法中没有显式调用父类的构造方法,而父类又没有无参的构造方法,则编译报错:

Implicit(隐式的) super constructor Animal() is undefined. Must explicitly(显式的) invoke another constructor

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值