面向对象特征之二:继承

面向对象特征之二:继承:

在这里插入图片描述

1.作用:
  • 代码量更少
  • 功能拓展
  • 为之后多态的使用提供了前提
2.继承的格式:class A extends B{}

A:子类、派生类、subclass

B:父类、超类、基类、superclass

3.体现:
  • 一旦子类继承父类以后,子类中就获取了父类B中声明的所有属性和方法

特别的:父类中声明为private的属性和方法,子类继承父类以后,仍然认为获取了父类中私有的结构。只是因为封装性的影响,使得子类不能直接调用父类的结构而已。

  • 子类继承父类以后,还可以声明自己特有的属性和方法,实现功能的拓展。子类和父类的关系,不同于子集和集合的关系。

extends:延展、拓展

4.Java中关于继承性的规定:
  • 一个类可以被多个子类继承;
  • Java中的类单继承性,一个类只能有一个父类;
  • 子父类是相对的概念;
  • 子类直接继承的父类,称为直接父类;间接继承的父类称为间接父类;
  • 子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法
5.关于java.lang.Object类:
  • 如果我们没有显示的声明一个类的父类的话,则此类继承于java.lang.Object类;
  • 所有的java类(除java.lang.Object类之外)都直接或者间接的继承与java.lang.Object类
  • 意味着,所有的java类具有java.lang.Object类声明的功能。
package com.myobjectoriented2.nonworking;
//extends: 继承
public class Person20 {
    private String name;//名字
	int age;//年龄
	
	
	public Person20() {
	
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
		//System.out.println("名字是:"+name);
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	
	

}

package com.myobjectoriented2.nonworking;

public class Man extends Person20 {

	String sex;//性别
	

	public void getsex(String sex) {
		this.sex=sex;
		
	}
	
	
	
	

}

package com.myobjectoriented2.nonworking;

public class Person20test {
	public static void main(String[] args) {
   Person20 p1=new Person20();
   Person20 p2=new Person20();
  
   // p1.name="a";
   p1.age=20;
   Man man=new Man();
   man.setName("zhou");
   System.out.println(man.getName());
 man.age=20;
 System.out.println(man.getAge());

	} 

}

在这里插入图片描述

package com.myobjectoriented2.nonworking;

public class Person21 {
private String name;
private char sex;
private int age;
public Person21(String name, char sex, int age) {
	
	this.name = name;
	this.sex = sex;
	this.age = age;
}
public Person21() {
	
}

public String toString() {
	return name;
}


}

package com.myobjectoriented2.nonworking;

public class Student extends Person21{

	private long number;
	int math;
	int englishi;
	int computer;
	public Student(String name, char sex, int age, long number, int math, int englishi, int computer) {//继承了Person21的构造器添加属性
		super(name, sex, age);
		this.number = number;
		this.math = math;
		this.englishi = englishi;
		this.computer = computer;
	}
	
	public double aver() {
		return(math+englishi+computer)/3;
	}
	
	
	
}

package com.myobjectoriented2.nonworking;

public class Studenttest {

	public static void main(String[] args) {
		
		Student stu1=new Student("zhou",'男', 25, 15623, 80, 60, 75);//调用Person21的构造器添加属性
	System.out.println(stu1.aver());
		System.out.println(stu1.toString());//调用Person21的方法
	
	}
	
}

在这里插入图片描述

package com.myobjectoriented2.nonworking;
/**
 * 
 * @Desciption
 * @author Abraham 
 * @email 1290807550@qq.com
 * @version JDK1.8
 * @date 2021年3月27日上午10:40:44
 */
public class Circle {//圆

	private double radius;

public Circle() {
	
	this.radius = 1;
}
	public void setRadius(double radius) {
		this.radius =radius;
	}
	
	public double getRadius() {
		return this.radius;
	}
	
	public double findArea() {
		return Math.PI*radius*radius;
	}
	
	
}

package com.myobjectoriented2.nonworking;

public class Cylinder extends Circle {//圆柱
private double length;

public Cylinder() {

	this.length = 1;
}

public double getLength() {
	return length;
}

public void setLength(double length) {
	this.length = length;
}
	
public double findVolume() {
	return this.findArea()*length;
	
}
	
	
	
}

package com.myobjectoriented2.nonworking;

public class Cylindertest {//测试类
public static void main(String[] args) {
	Cylinder cylin=new Cylinder();
	cylin.setRadius(2);
	System.out.println(cylin.findArea());//计算底面积
	cylin.setLength(3);
	System.out.println(cylin.findVolume());//计算圆柱体积
	
	
	
}
}


不同包下的子类继承的问题:

首先,先明确权限问题:

在这里插入图片描述

  • 不同的包下,虽然是子父类关系,但是private/default的属性和方法 都不能用了
  • 但是protected 的属性和方法可以用,一般用的少。一般要么就是最小的Private,要么就是最大的public。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值