前言
上篇文章讲了三大特性之———封装,本篇来给大家说一下我自己对于面向对象中继承的理解。
继承的概念
首先抛开计算机而言,继承的社会性概念就是一个儿子得到自己父亲的资产。这时儿子就得到了父亲拥有的一切。
那么在JAVA中的概念就很好理解了,当一个类通过extends继承一个父类之后,那么这个过程称为继承。
//学生父类
public class Stu {
private String stuName;//学生姓名
private Integer stuId;//学号
private Integer stuAge;//学生年龄
//构造函数
public Stu(String stuName,Integer stuId,Integer stuAge) {
this.stuName=stuName;
this.stuId=stuId;
this.stuAge=stuAge;
}
void print() {
System.out.println("我叫"+stuName+",学号是"+stuId+",今年"+stuAge+"岁");
}
}
编写“小明”这个实体类。
//子类
public class Ming extends Stu{
public Ming(String name, int id, int age) {
super(name,id,age);
}
}
使用测试类来看看会发生什么:
public class Test {
public static void main(String[] args) {
Ming stu=new Ming("小明",1901,19);
stu.print();
}
}
输出结果:我叫小明,学号是1901,今年19岁。
可以看出,在Ming类中没有写输出方法,只是继承了Stu父类。因此继承是可以把父类中的非封装变量,方法都可以继承。
不可被继承的:父类中被private修饰的变量,构造函数(方法)
举个栗子:
//父类
public class Stu {
String name="小明";
private String namepri="小红";
void print() {
System.out.println("我叫"+name);
}
}
//子类
public class Ming extends Stu{
//继承不重写
}
//测试类
public class Test {
public static void main(String[] args) {
Ming stu=new Ming();
stu.print();
}
}
猜猜看输出结果为什么,把结果打在评论区看看你的猜想对不对吧!