Java面向对象5——类的继承与权限控制,重写与super
2016-10-18 20:01
375 查看
1 类的继承
Java中使用extends关键字实现类的继承机制,其语法规则为:
通过继承,子类自动拥有了基类(superclass)的所有成员(成员变量和方法)。
Java只支持单继承,不允许多继承。一个子类只能有一个基类,一个基类可以派生出多个子类。
2 访问控制
Java权限修饰符public protected private置于类的成员定义前,用来限定其他对象对该类对象成员的访问权限。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/30/463d15d72ff04be2c762bf4875f9067f)
对于class的权限修饰只可以用public和default。public类可以在任意地方被访问,default类只可以被同一个包内部的类访问。
3 方法的重写(重写的时候可以直接将基类中的方法名复制到子类中,以免写错方法的名字)
在子类中可以根据需要对从基类中继承来的方法进行重写。
重写方法必须和被重写方法具有相同方法名称、参
4000
数列表和返回类型。
重写方法不能使用比被重写方法更严格的访问权限。
如下,基类Person的方法getInfo()在子类Student中进行重写:
4 super关键字
在Java类中使用super来引用基类的成分:
内存分析:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/30/6cec965d13c857a12ec6be7633675f33)
运行结果:
Java中使用extends关键字实现类的继承机制,其语法规则为:
<modifier> class <name> [extends <superclass>]{... ...}
通过继承,子类自动拥有了基类(superclass)的所有成员(成员变量和方法)。
Java只支持单继承,不允许多继承。一个子类只能有一个基类,一个基类可以派生出多个子类。
class Parent{ private int n_private = 1; int n_friendly = 2; protected int n_protected = 3; public int n_public = 4; } class Child extends Parent{ public void f(){ //n_private 无法访问所以不能进行赋值操作,其他可以 n_friendly = 20; n_protected = 30; n_public = 40; } }
2 访问控制
Java权限修饰符public protected private置于类的成员定义前,用来限定其他对象对该类对象成员的访问权限。
对于class的权限修饰只可以用public和default。public类可以在任意地方被访问,default类只可以被同一个包内部的类访问。
3 方法的重写(重写的时候可以直接将基类中的方法名复制到子类中,以免写错方法的名字)
在子类中可以根据需要对从基类中继承来的方法进行重写。
重写方法必须和被重写方法具有相同方法名称、参
4000
数列表和返回类型。
重写方法不能使用比被重写方法更严格的访问权限。
如下,基类Person的方法getInfo()在子类Student中进行重写:
class Person { private String name; private int age; public void setName(String name){this.name=name;} public void setAge(int age) {this.age=age;} public String getName(){return name;} public int getAge(){return age;} public String getInfo() { return "Name: "+ name + "\n" +"age: "+ age; } } class Student extends Person { private String school; public String getSchool() {return school;} public void setSchool(String school) {this.school =school;} public String getInfo() { return "Name: "+ getName() + "\nage: "+ getAge() + "\nschool: "+ school; } } public class TestOverWrite { public static void main(String arg[]){ Student student = new Student(); Person person = new Person(); person.setName("none"); person.setAge(1000); student.setName("John"); student.setAge(18); student.setSchool("SCH"); System.out.println(person.getInfo()); System.out.println(student.getInfo()); } }
4 super关键字
在Java类中使用super来引用基类的成分:
class FatherClass { public int value; public void f(){ value = 100; System.out.println("FatherClass.value="+value); } } class ChildClass extends FatherClass { public int value; public void f() {//重写f() super.f(); value = 200; System.out.println("ChildClass.value="+value); System.out.println(value); System.out.println(super.value); } } public class TestInherit { public static void main(String[] args) { ChildClass cc = new ChildClass(); cc.f(); } }
内存分析:
运行结果:
相关文章推荐
- Java学习之面向对象(方法的重写 overwrite,super的使用,继承中的构造方法)
- 关于java的访问权限控制,以关于继承的this和super小结
- java基础(八)Math/代码块/继承成员方法指南的关系/继承中成员变量之间的关系/方法的重写/继承中构造方法之间的关系/this和super的区别
- JAVA面向对象基础:继承、变量隐藏、方法重写、包、修饰符、this、super
- JAVA基础再回首(六)——父与子的继承、super关键字、方法重写、方法重载
- java学习之旅41--面向对象_14_继承_super_构造器的调用_继承的内存分析(非常重要)
- php面向对象(二),继承,重写,parent,final关键字及访问控制
- JAVA笔记6-继承和权限控制
- Java面向对象-访问控制权限
- JAVA基础--继承和权限控制
- 【java】Java的继承,方法重写,访问权限
- Java面向对象04-继承,访问控制修饰符,static和final
- java面向对象-super、继承、覆盖、多态、类加载、访问控制
- Java之访问权限控制符以及结合继承体系引发的注意事项
- java之面向对象:继承extends、super、覆盖override的用法
- [疯狂Java]面向对象:继承、覆盖、super
- java基础-----访问权限,继承,super
- JAVA菜鸟入门篇 - 面向对象三大特征之一:继承 ,方法重写(override)和Object类 (十四)
- java继承方法重写权限问题
- Java中传值与传址、static、继承、重写、super