java继承

继承

1.概念

子类对象具有父类的实例域和方法,子类从父类继承方法。

2.格式

class parent{
}
class child extends parent{
}

3.为什么继承

有两个类老鼠和企鹅,分别要求如下:

·老鼠:属性(姓名,id)、 行为(吃,睡,自我介绍)

·企鹅:属性(同上)、行为(同上)

class Mouse{
	String name;
	int id;
	public Mouse(String name,int id){
		this.name = name;
		this.id = id;
	}
	public void sleep(){
		System.out.println(name+" is sleeping");
	}
	public void eat(){
		System.out.println(name+" is eating");
	}
	public void introduce(){
		System.out.println("my name is "+name);
	}
}

class Penguin{
	String name;
	int id;
	public Penguin(String name,int id){
		this.name = name;
		this.id = id;
	}
	public void sleep(){
		System.out.println(name+" is sleeping");
	}
	public void eat(){
		System.out.println(name+" is eating");
	}
	public void introduce(){
		System.out.println("my name is "+name);
	}
}

两类都可以抽出很多共性,比如都属于动物类,都具有相似属性和行为,则加上继承如下:

public class test {
	public static void main(String[] args) {
		Animal mo = new Mouse("jiji",1);
		Animal pe = new Penguin("pp",2);
		mo.eat();
		pe.introduce();
	}
}
class Animal{
	String name;
	int id;
	public Animal(String name,int id){
		this.name = name;
		this.id = id;
	}
	public void sleep(){
		System.out.println(name+" is sleeping");
	}
	public void eat(){
		System.out.println(name+" is eating");
	}
	public void introduce(){
		System.out.println("my name is "+name);
	}
	
}

class Mouse extends Animal{
	public Mouse(String name,int id){
		super(name,id);
	}

}

class Penguin extends Animal{
	public Penguin(String name,int id){
		super(name,id);
	}
}

输出:

jiji is eating
my name is pp

4.特性

·子类可以拥有父类的非private属性和方法

·子类可以有自己的属性方法

·子类可以重写父类的方法

·可以多继承,A继承B,B继承C

·提高代码间的耦合性(缺点)

5.关键字

extends、implements、super、this,final

1)extends:

这个关键字只能实现单一继承,即一个子类只能拥有一个父类。

2)implements:

类可以实现多个接口实现多继承

interface A{
	public void eat();
	public void run();
}
interface B{
	public void drink();
}
class C implements A,B{

	@Override
	public void drink() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void eat() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		
	}
}

3)super、this

super用来实现子类对父类成员的访问。

this指向自己的引用。

public class test {
	public static void main(String[] args) {
		Animal a = new Animal();
		a.eat();
		Mouse m = new Mouse();
		m.eatTest();
	}
}
class Animal{
	public void eat(){
		System.out.println("Animal is eating");
	}
}

class Mouse extends Animal{
	public void eat(){
		System.out.println("Mouse is eating");
	}
	public void eatTest(){
		super.eat();
		this.eat();
	}

}

输出:

Animal is eating
Animal is eating
Mouse is eating

4)final

用final关键字定义的类不可以被继承,定义的方法不可以被重写。

6.构造器

子类不继承父类的构造器,只调用。如果父类的构造器有参数,则必须在子类的构造器中通过super调用构造函数并配以适当的参数列表。如果父类参数列表没有参数,则不用通过super调用,系统会自动调用父类的无参构造器。

public class test {
	public static void main(String[] args) {
		Animal a =  new Animal();
		Animal b = new Animal("b");
		Mouse c = new Mouse();
		Mouse d = new Mouse("d");
	}
}
class Animal{
	public Animal(){
		System.out.println("no parameter Animal is instansed");
	}
	public Animal(String name){
		System.out.println("parameter Animal is instansed");
	}
}

class Mouse extends Animal{
	public Mouse(){
		System.out.println("no parameter Mouse is instansed");
	}
	public Mouse(String name){
		super(name);
		System.out.println("parameter Mouse is instansed");
	}
}

输出:

no parameter Animal is instansed
parameter Animal is instansed
no parameter Animal is instansed
no parameter Mouse is instansed
parameter Animal is instansed
parameter Mouse is instansed

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值