【Java概念】继承(8)
来源:互联网 发布:sam smith 知乎 编辑:程序博客网 时间:2024/06/10 06:02
继承:
package cn.hncu.program.extends_;import org.junit.Test;/** * 项目名:继承类 * 时间 :2017-9-12 上午10:35:04 * * 1.测试子类调用父类的构造方法来为父类初始化成员变量。 * */public class Extends { @Test public void t1(){ //Person p = new Person(); Student s = new Student("Jack", 22, 50.1, "Java", 1.0); System.out.println(s); //System.out.println(p); } @Test public void t2(){ Student s = new Student(); }}class Person{//默认继承Object类,因此可以在任何类中默认使用Object类的方法。 private String name = "Jack"; private int age; private double weight; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } /* * 1.空参构造方法,如果写了空参构造方法,系统不会给我们再加默认空参构造方法, * 如果没有写空参构造方法及其有参构造方法,系统会自动帮我们加上默认空参构造方法。 */ public Person() { /* * 2.【super】的意思是:当前的类调用其父类的构造方法。此时调用父类Object类 * 3.子类构造方法中,如果我们不显式用super(...)调用父类构造方式,Java会帮我们加. * 4.这一句可以省略,这是构造一个Object对象,即使不写系统会帮我们自动加上的。 * 5.super();是调用父类空参方法,super带参数是表示调用父类带参数构造方法。 * 6.不能在静态方法中使用super。 * */ super(); } public Person(String name, int age, double weight) { super(); this.name = name; this.age = age; this.weight = weight; } /*【覆盖方法】: * 1.覆盖:子类中和父类相同的方法(相同的方法名和参数列表)。 * 2.非静态的方法不能覆盖父类的静态方法。 * 3.覆盖方法:方法名和参数列表必须和父类的一致,返回类型也必须和父类的一致。 * 4.子类覆盖方法的约束: 前不能小,后不能大。 * 子类方法的权限不能低于父类的; * 子类方法抛出的异常不能比父类大; * * 【子类覆盖父类的成员方法】: * 1.子类覆盖父类方法,既可以完全重写,也可以扩展父类方法的功能。 * 2.覆盖父类方法时,子类方法的访问权限不能小于父类方法的访问权限。 * 3.覆盖表现为父类与子类之间方法的多态性。 * 程序运行时,究竟执行覆盖同名方法中的哪一个,取决于调用与该方法的对象所属的类是父类还是子类。 * 4.即父类调用父类的成员方法,子类对象调用子类的成员方法。 * * 【子类重载父类成员方法】: * 1.子类重定义了父类成员方法,如果参数列表不同,,则子类重载了继承来的该成员方法。 * 2.当子类成员方法仅重载而没有覆盖父类同名成员方法时,重载的多个同名成员方法之间能够 * 通过调用时的实际参数而相互区别,不需要使用super引用。 */ public String toString(){ return name+","+age+","+weight; }}/* * 【extends的特性】: * 1.子类可以继承父类的非private类型的成员变量和普通成员方法。 * */class Student extends Person{ private String speciality; /* * 【隐藏父类成员变量】: * 1.子类中的成员变量和父类中的成员变量完全相同的时候,此时隐藏了父类的成员变量。 */ private String name="Rose"; public String getSpeciality() { return speciality; } public void setSpeciality(String speciality) { this.speciality = speciality; } /* * 【注意】: * 1.this和super不能同时存在。 * 2.super是可以调用父类的构造方法,this是可以调用子类的构造方法。 * 3.因此调用this会屏蔽掉super调用父类构造方法。 */ public Student() { this("Jack", 2, 20.1, "1", 1.1); //super(); } /* * 【用子类的构造方法为父类成员变量初始化值】: * version为构造方法的版本号 */ //方式一:调用父类的setter方法进行设置值: public Student(String name,int age,double weight,String speciality,int version){ /*【子类中的this、super】: * 1.对于子类中的this.成员变量/成员方法:先到子类中找,若没有就到父类中找,找到即调用。 * 2.对于子类中的super.成员变量/成员方法:直接到指定的父类中调用。----super.setWeight(weight) * 3.访问父类的成员:super.成员变量名 或super.成员方法名(....) * 4.访问父类的构造方法:super(....) * */ this.setName(name); this.setAge(age); //this.setWeight(weight); super.setWeight(weight); this.setSpeciality(speciality); } //方式二:直接用super调用父类的构造方法: public Student(String name,int age,double weight,String speciality,double version){ //super(); super(name, age, weight); this.setSpeciality(speciality); }}
阅读全文
0 0
- 【Java概念】继承(8)
- Java:继承 (概念特点)
- Java子类的继承概念(一)
- Java继承的概念
- java--继承概念
- Java中继承的概念
- Java继承_概念与实现(一)
- maven--6.概念(继承)
- java继承、多台、抽象类概念
- Java继承的概念与实现
- Java继承中概念的混淆
- Java继承的概念与实现
- Java继承的概念与实现
- 继承概念
- 【java基础】--(2)面向对象特征之概念、封装、继承
- Java每日小练(二)之理解“继承”的概念
- 小翼的java开发俄罗斯方块--------继承的概念(2)
- Java入门教程-4.1Java继承的概念与实现
- XML解析
- HDU 6199 gems gems gems [DP+DP优化]
- 关于webpack和vue系列框架(vue-cli),后台返回本地图片的url在本地显示不出来
- 用开源代码构建机器人需要考虑的问题
- Gradle版本号不匹配导致的错误解决办法
- 【Java概念】继承(8)
- 【LeetCode】Manacher算法+Longest Palindromic Substring(最长回文子串)
- java is-a has-a
- 数据结构与算法:二叉树
- JavaSE复习(一)java概述和基本语法上
- Linux下常见的关于目录操作的命令
- 设计模式之外观模式
- 基于MATLAB GUI的串口通信
- camera标定