Java的继承

继承

-Man extends Human表示Man继承于Human
-Human是父类, Man是子类
-子类继承父类所有的属性和方法(但不能直接访问private成员)
-根据信息隐藏原则:子类会继承父类所有的方法。可以直接使用
-子类也会继承父类的父类的所有的属性和方法(但不能直接访问private成员)
-单根继承原则:每个类只能继承一个类

一个父类Human()

有两个成员属性height和weight,和一个成员属性eat()

public class Human {
	int height;    
    int weight;
    public void eat()
    {
    	System.out.println("I can eat!");
    }
}

继承Human()的子类Man()

public class Man extends Human
{
	//overwrite重写父类方法
	public void eat(){
		System.out.println("I can eat more");
	}
	//扩展,比父类拥有更多的方法
	public void plough(){
		System.out.println("I can plough");
	} //耕田

	public static void main(String[] a)	{
		Man obj1 = new Man();
		obj1.eat();
	}
}

输出

I can eat more

在同样方法名和参数情况下,本类的方法会比父类的方法优先级高

子类可以通过调用父类的方法来访问父类的私有的成员属性

继承类的构造函数

-每个Java类都必须有构造函数
-每个子类的构造函数的第一句话,都默认调用父类的无参数构造函数super(),除非子类的构造函数第一句话是super,而且super语句必须放在第一条,不会出现连续两条super语句

父类A

public class A {
	public A()
	{
		System.out.println("111111");
	}
	public A(int a)
	{
		System.out.println("222222");
	}
}

子类B继承A

public class B extends A{
	public B()
	{
		//super(); 编译器自动增加super(),先引用A的无参构造函数,输出111111
		System.out.println("333333");
	}
	public B(int a)
	{
		super(a);  
	//编译器不会自动增加super();先引用A的含有int a参数的构造函数,输出222222
		System.out.println("444444");
	}
	public static void main(String[] a)
	{
		B obj1 = new B();
		System.out.println("==============");
		B obj2 = new B(10);		
	}
}

输出:

111111
333333
==============
222222
444444
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值