一起学Java(十六)
Posted smile学子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起学Java(十六)相关的知识,希望对你有一定的参考价值。
不积跬步,无以至千里;不积小流,无以成江海。
Java语言基础
Java面向对象之继承
继承的主要作用:在已有类的基础上进行功能的扩充。
减少了代码的冗余,提高了代码的复用性;
类与类之间产生关系,提供了多态的前提。
在Java中,继承的关键词是 extend,即子类不是父类的子集,而是对父类的扩展。
语法格式:
class 父类 { } class 子类 extends 父类 { }
关于继承的规则:
子类不能直接访问父中私有的 (private) 的成员变量和方法。(可以通过其他操作getter或setter访问)
Java只支持单继承和多层继承(不是多继承)。即一个子类只能有一个父类,而一个父类可以派生多个子类。
如果没有继承:
class Person{ private String name; private int age; public Person() { System.out.println("无参构造器!"); } public Person(String name, int age){ this.name = name; this.age = age; } public void say() { System.out.println(name + "爱学习!"); } public String getInfo() { return "姓名:" + name + ",年龄:" + age; } } class Student{ private String name; private int age; public Student() { System.out.println("无参构造器!"); } public Student(String name, int age){ this.name = name; this.age = age; } public void say() { System.out.println(name + "爱学习!"); } public String getInfo() { return "姓名:" + name + ",年龄:" + age; } } public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Person person = new Person("tutu", 24); person.say(); Student student = new Student(); student.say(); } }
程序输出:
tutu爱学习! 无参构造器! null爱学习!
使用继承:
class Person{ private String name; private int age; public Person() { System.out.println("无参构造器!"); } public Person(String name, int age){ this.name = name; this.age = age; } public void say() { System.out.println(name + "爱学习!"); } public String getInfo() { return "姓名:" + name + ",年龄:" + age; } } class Student extends Person{ } public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Person2 person = new Person2("tutu", 24); person.say(); Student2 student2 = new Student2(); student2.say(); } }
程序输出:
tutu爱学习! 无参构造器! null爱学习!
注意:不能访问父中私有的 (private) 的成员变量和方法。
那么如何访问父类的私有属性呢?
class Person{ private String name; public Person() { System.out.println("无参构造器!"); } public String getname() { return name; } public void setname(String name) { this.name = name; } } class Student extends Person{ } public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Student student = new Student(); student.setname("tutu"); String name = student.getname(); System.out.println(name); } }
程序输出:
无参构造器! tutu
注意:
通过调用子类中从父类那里继承的set和get方法来访问父类中私有属性name。
但是要记住,子类并非继承到父类的私有属性name,子类只是继承了父类的非私有属性。
虽然子类可以通过以上的方法可以访问父类的私有属性,但是一般说子类可以访问父类的私有属性这些说法都是错误的。
要注意一点,如果父类中没有对私有属性的 get 和 set 方法或者其他对私有属性操作的方法,又或者这些方法都被private修饰,
这样子类是无法访问到父类的私有属性的。
博客借鉴:https://blog.csdn.net/thanours/article/details/79672019
以上是关于一起学Java(十六)的主要内容,如果未能解决你的问题,请参考以下文章