继承性----OOP(面向对象)的三大特性之二

今天学习了面向对象的第二大特征----继承性。下面进行总结:

  • 1、一旦子类继承了父类以后,那么子类就获取了父类 所有的 属性和方法。
    *私有的属性也是继承到了,只是由于封装性的影响,不可以直接调用;方法也是一样的道理;构造器的话,还可以用,但是不可以理解为把父类的构造器粘贴到子类处,因为构造器要与类同名

    *特别的,父类中声明为private的属性或方法,子类继承父类后,仍然认为获取了父类中私有的结构;只是由于封装性搞得影响,使得子类不能直接调用父类的结构而已。
    *封装性解决的是结构的可见性的问题,而继承性解决的是能不能那倒里边的结构的问题;
    *---->继承性决定了都可以拿到,但是拿到之后可不可以 调用,取决于封装性
    2、子类继承父类以后,还可以声明自己特有的属性或方法。实现功能的拓展
  • 注意:子类和父类的关系,不同于集合和子集的关系
    3、Java中关于继承的规定
    一个父类可以有多个子类
    一个子类只能有一个父类
    子类和父类是相对的概念
    子类直接继承的父类,称为:直接父类;简介继承的父类,称为:间接父类
    子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法

    ------>所有类(java.lang.Object类除外),都直接或间接的继承于java.lang.Object类类

具体的可以通过以下代码理解:
1、Creature类

public class Creature {
	/*
	 * 在这里,Creature类的父类是java.lang.Object类
	 * ------>所有类(java.lang.Object类除外),都直接或间接的继承于java.lang.Object类
	 *
	 */
	public void breath() {
		System.out.println("呼吸");
	}
	
}

2、Person类

public class Person extends Creature{

	String name;
	private int age;
	
	public Person() {
		
	}
	public Person(String name,int age) {
		this.name = name;
		this.age = age;
	}
	
	public void eat() {
		System.out.println("吃饭");
		sleep();
	}
	
	private void sleep() {
		System.out.println("睡觉");
	}
	
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	
}

3、Student类

public class Student extends Person{

//	String name;
//	int age;
	String major;
	
	public Student() {
		
	}
	public Student(String name,int age,String major) {
		this.name = name;
//		this.age = age;
		setAge(age);
		this.major = major; 
	}
	
//	public void eat() {
//		System.out.println("吃饭");
//	}
//	
//	public void sleep() {
//		System.out.println("睡觉");
//	}
	public void study() {
		System.out.println("学习");
	}
	
	public void show() {
		System.out.println("name:" + name + ",age:" + getAge());
	}
	
}

4、测试类(包含main方法)

public class ExtendsTest {
	public static void main(String[] args) {
		
		Person p1 = new Person();
//		p1.age = 1;
		p1.eat();
		System.out.println("********");
		
		Student s1 = new Student();
		s1.eat();
//		s1.sleep();
		s1.name = "Tom";
		
		s1.setAge(10);
		System.out.println(s1.getAge());
			
		s1.breath();
		
		Creature c = new Creature();
		System.out.println(c.toString());
	}
}

路漫漫其修远兮,吾将上下而求索!
坚持每天的学习,完成任务量,加油!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值