JAVA基础10-----继承(extends)

1./*
继承(extends):
让类和类之间产生关系,子父类关系.
A.继承的好处
提高了代码的复用性
提高了代码的维护性
让类和类产生了关系,是多态的前提
B.继承的弊端
类的耦合性增强了

开发的原则:
高内聚,低耦合
耦合:类和类之间的关系
内聚:自己完成某件事的能力

*/

class Demo_Extends {
	public static void main(String[] args) {
		Cat c = new Cat();
		c.legs = 4;
		c.colour = "red";
		c.sleep();
		c.eat();

		System.out.println("小猫有" + c.legs + "腿颜色是" + c.colour);
	}
}
//动物类
class Animal {
	String colour;
	int legs;
}
//猫类   继承父类  动物类的属性
class Cat extends Animal {
	public void sleep() {
		System.out.println("小猫喜欢睡觉");
	}
	public void eat () {
		System.out.println("小猫喜欢吃饭");
	}
}
//狗类    继承父类  动物类的属性
class Dog extends Animal {
	public void sleep() {
		System.out.println("小狗喜欢睡觉");
	}
	public void eat () {
		System.out.println("小狗喜欢吃饭");
	}
}

2./*
继承(extends)特点:
A.JAVA只支持单继承,不支持多继承(一个儿子一个爹)
JAVA支持多层继承(继承体系)
如果想用这个体系的所有功能用最底层的类创建对象
如果想看这个体系的公共性能,看最顶层的类
*/

class Demo_Extends {
	public static void main(String[] args) {
		DemoC c = new DemoC();
		c.show();
		c.method();
		c.print();
	}
}

class DemoA {
	public void show() {
		System.out.println("DemoA");
	}
}
class DemoB extends DemoA {
	public void method() {
		System.out.println("DemoB");
	}
}

class DemoC extends DemoB {
	public void print() {
		System.out.println("DemoC");
	}
}

3.继承(extends)注意事项:
A.子类只能继承父类所有的非私有的成员(成员方法和成员变量)
B.子类不能继承父类的构造方法,但是可以通过super关键字去访问父类的构造方法
C.不要为了部分的功能而去继承
/*
this和super的区别
A.this:当前对象的引用,谁来调用我,我就代表谁
super:代表当前对象父类的引用
B.this和super的使用区别
成员变量调用的区别:
this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
super.成员变量 调用父类的成员变量
调用构造方法:
this : 调用本类的构造方法
super: 调用父类的构造方法
调用成员方法:
this.成员方法: 调用本类的成员方法,调用父类的成员方法
super.成员方法: 调用父类的成员方法

子类中所以的构造方法默认都会访问父类中空参数的构造方法,
因为子类会继承父类中的数据,可能还会使用父类的数据,所以,
子类初始化之前,一定要先完成父类数据的初始化.
当父类中没有无参构造方法的时候用super();或者this()解决;语句必须出现在构造方法的第一条语句上

实际上,每一个构造方法的第一条语句默认都是:super(); Object类最顶层的父类.

*/

class Demo_Extends {
	public static void main(String[] args) {
		Son s = new Son();

	}
}

class Father {
	public Father() {
		System.out.println("父类中的构造方法");
	}
}

class Son extends Father  {
	public Son() {
		System.out.println("子类中的构造方法");
	} 
}
4.class Demo_Extends {
	public static void main(String[] args) {
		Son s = new Son();
		System.out.println("----------------");
		Son s1 = new Son("张三",23);

	}
}

class Father {
	private String name;
	private int age;
	public Father() {
		System.out.println("Father空参构造");
	}
	public Father(String name,int age) {
		this.name = name;
		this.age = age;
		System.out.println("Father有参构造");
	}
	public void setName() {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setAge() {
		this.age = age;
	}
	public int getAge() {
		return age;
	}
}

class Son extends Father  {
	public Son() {
		System.out.println("son空参构造");
	}
	public Son(String name,int age) {
		System.out.println("son有参构造");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值