关于继承,我想大多数人都知道,它是面向对象语言中的三大特性之一,所以在这里,关于继承的概念等我就不做详细介绍了,我主要就讲一下大家对他的认识中一些比较容易犯的错误吧。
错误认识1、继承,是将父类中所有的属性和方法都继承下来。
其实这个认识是错误的,继承,并不是将父类中所有的属性和方法都继承下来,而是只继承父类中公有的属性和方法,对于私有的(即是private)属性,我们可以通过对应的getter和setter方法来对其进行修改。对于私有的方法,我们可以通过其它公共的方法来对其进行调用。
下面是一个例子,大家可以运行来学习验证一下。
Person.java
- package com.extendsStudy.model;
- public class Person {
- private String private_name; //私有的属性
- public int public_age; //公共属性
- /**
- * 私有属性private_name的getter方法
- * @return 当前类中private_name的值
- */
- public String getPrivate_name() {
- System.out.println("调用了父类的getPrivate_name方法: " + this.private_name);
- return private_name;
- }
- /**
- * 私有属性private_name的setter方法
- * @param private_name 记录中将要赋值给类中private_那么属性的变量
- */
- public void setPrivate_name(String private_name) {
- this.private_name = private_name;
- }
- }
Boy.java
- package com.extendsStudy.model;
- /**
- * 继承了Person类的子类Boy
- */
- public class Boy extends Person{}
下面是运行测试类:
ExtendsTest.java
- package com.extendsStudy.test;
- import com.extendsStudy.model.Boy;
- public class ExtendsTest {
- public static void main(String[] args) {
- Boy boy = new Boy(); //创建一个boy对象
- boy.public_age = 11; //变量必须先声明再赋值最后才能使用,因为在model类中没有赋值,所以在这里要记得赋值
- System.out.println(boy.public_age); //输出public_age属性的值
- boy.setPrivate_name("haha"); //调用private_name属性的setter方法对父类中的private_name属性进行复制
- System.out.println(boy.getPrivate_name()); //调用private_name属性的getter方法获取父类中的private_name属性的值
- }
- }