java第二大特性---继承

/*
面向对象三大特征:
	1. 封装
	2. 继承 
	3. 多态

继承:

目前存在的问题:
	1. 目前没有把动物类与鸟类的继承关系描述清楚。
	2. 动物类与鸟类的代码重复。


继承的格式:
	
	class  类名1  extends 类名2{
		
	}

继承要注意的细节:
	1.  子类可以继承父类的成员,但是千万不要为了减少重复代码而且继承,只有
	真正存在继承关系的情况下才去继承。
	
	2. 父类私有的成员是不能被继承的。

	3. 父类的构造方法也是不能被继承的。
	
	4. 创建子类对象时默认会先调用父类的无参的构造函数。



*/

//动物
class Animal{

	String name;

	String color;

	public Animal(String name,String color){
		this.name = name;
		this.color = color;
		System.out.println("Animal带参的构造函数...");
	}

	public Animal(){
		System.out.println("Animal无参的构造函数...");
	}

	public void eat(){
		System.out.println(name+"在吃...");
	}
}


//鸟  鸟是属于动物中一种。
class Bird extends Animal{  // Bird 就称作为Animal的子类。  Animal 称作为Bird的父类、 超类、基类 
	
	public Bird(){
		System.out.println("Bird无参的构造函数...");
	}

	public void fly(){
		System.out.println(name+"在飞翔...");
	}

}

class Demo7 
{
	public static void main(String[] args) 
	{
		/*
		Bird b = new Bird();
		b.name = "喜鹊";
		b.color = "彩色";
		b.age = 1;
		b.eat();
		*/

		new Bird();
		new Bird();



	}
}
/*
疑问:创建子类对象时为什么会调用父类的构造函数?作用是什么?

作用: 调用父类的构造方法的作用是为了初始化从父类继承下去的属性。


*/

//父类
class Fu{

	int x =10;

	String name;  //名字属性
	
	//构造函数
	public Fu(String name){
		this.name = name;
		System.out.println("父类带参 的构造函数...");
	}

	public Fu(){
		System.out.println("父类无参的构造函数...");
	}

}

//子类
class Zi extends Fu{
	
	int x = 20;


	public Zi(String name){
		//super(name);//指定调用父类一个参数的构造方法
	}

	
	public void print(){
		System.out.println("父x:"+super.x);
		System.out.println("子x:"+x);
	}
}


class Demo8 
{
	public static void main(String[] args) 
	{
		Zi zi = new Zi("大头儿子"); // 创建zi对象的时候,初始化name的属性?
		System.out.println("name:"+zi.name);
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值