Java面向对象高级--继承的进一步研究
来源:互联网 发布:人工智能和人类抢饭碗 编辑:程序博客网 时间:2024/06/06 14:19
1、子类对象的实例化过程
class Person{// 定义Person类private String name ;// 定义name属性private int age ;// 定义age属性public Person(){System.out.println("父类Person中的构造。") ;}public void setName(String name){this.name = name;}public void setAge(int age){this.age = age ;}public String getName(){return this.name ;}public int getAge(){return this.age ;}};class Student extends Person{// 定义Student类private String school ;// 定义school属性public Student(){super() ;// 默认隐藏System.out.println("子类Student中的构造。") ;}public void setSchool(String school){this.school = school ;}public String getSchool(){return this.school ;}};public class InstanceDemo{public static void main(String arsg[]){Student stu = new Student();// 实例化子类对象stu.setName("张三") ;// 此方法在Student类中没有明确定义stu.setAge(30) ;stu.setSchool("清华大学") ;System.out.println("姓名:" + stu.getName() + ",年龄:" + stu.getAge() + ",学校:" + stu.getSchool() ) ;}};
对于子类的构造方法中,隐藏了super的语句,有时也将父类称为超类。
2、方法的覆写
class Person{// 定义父类private void print(){// 默认的访问权限System.out.println("Person --> void print()。") ;}public void fun(){// 定义一个fun方法this.print() ;// 调用print()方法}};class Student extends Person{// 定义继承关系void print(){// 覆写父类中的方法// super.print() ;// 访问父类中被子类覆写过的方法System.out.println("Student --> void print()。") ;}};public class OverrideDemo04{public static void main(String args[]){Student s = new Student() ;s.fun() ;}};
此时,方法并没有被覆写,而是相当于在子类中又重新定义了一个新的方法。
3、属性的覆盖
class Person{// 定义父类public String info = "MLDN" ;// 定义一个公共属性};class Student extends Person{// 定义继承关系public String info = "LXH" ;// 定义了一个与父类中属性名称一致的属性void print(){// 覆写父类中的方法System.out.println("父类中的属性:" + super.info) ;System.out.println("子类中的属性:" + this.info) ;}};public class OverrideDemo05{public static void main(String args[]){Student s = new Student() ;s.print() ;}};
4、方法的覆写与重载的区别
5、super关键字
super表示从子类中调用父类中的操作:如,调用属性,方法,构造等等。
子类在实例化的时候,默认会调用父类中的无参构造,如果希望调用有参构造,则必须在子类中明确的声明。
class Person{// 定义Person类private String name ;// 定义name属性private int age ;// 定义age属性public Person(String name,int age){this.setName(name) ;this.setAge(age) ;}public void setName(String name){this.name = name;}public void setAge(int age){this.age = age ;}public String getName(){return this.name ;}public int getAge(){return this.age ;}public String getInfo(){return "姓名:" + this.getName() + ";年龄:" + this.getAge() ;}};class Student extends Person{// 定义Student类private String school ;// 定义school属性public Student(String name,int age,String school){super(name,age) ;// 明确调用父类中有两个参数的构造this.school = school ;}public void setSchool(String school){this.school = school ;}public String getSchool(){return this.school ;}public String getInfo(){return super.getInfo() + ";学校:" + this.getSchool() ;} };public class SuperDemo01{public static void main(String arsg[]){Student stu = new Student("张三",30,"清华大学");// 实例化子类对象System.out.println(stu.getInfo()) ;}};
- Java面向对象高级--继承的进一步研究
- Java-面向对象(高级篇)--继承的进一步研究
- 面向对象高级(继承的基本实现、进一步研究、final关键字)
- 面向对象高级——继承的实现和进一步研究
- Java面向对象高级--继承的基本实现--extends
- Java-面向对象(高级篇)--继承的基本概念
- 继承的基本概念(Java面向对象高级篇)
- java学习笔记(二十二)继承的进一步研究
- 面向对象的进一步拓展
- 面向对象的进一步拓展
- java基础之类与对象的进一步研究
- 面向对象高级2-继承
- Java面向对象高级--对象的多态性
- Java继承的进一步联系
- Java面向对象高级--继承的应用----整形数组类、排序类、反转类
- 高级面向对象 之 继承(拷贝继承)
- Java面向对象高级
- Java面向对象-Java类的继承
- C#获取当前路径
- 函数:MySQL中取整函数round和floor
- 集深V5复杂SQL设计分组报表
- 如何利用快播雷达搜索全国范围内共享的视频
- 新网互联域名可以直接获取转移码
- Java面向对象高级--继承的进一步研究
- 好用的集群管理工具dsh(分布式shell)
- javascript中实现伪异步
- 关于android 动画坐标百分比问题!
- 现代浏览器下的动画实现
- 【转】实现memcpy函数
- Socket模型详解
- VS 2010下LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- XAML Margin