继承详解
来源:互联网 发布:华为网络认证多少钱 编辑:程序博客网 时间:2024/06/09 06:29
/*在现实生活中事物与事物之间是存在关系. 球员---->球队 整体与部分关系 has a 关系 学生----->人 继承的关系 is a 关系*///球员类class Player{ int num; //编码 String name; public Player(int num , String name){ this.num = num; this.name = name; } public void run(){ System.out.println(name+"开跑..."); }}//球队类class Team{ String name; //球队的名字 Player p1; //球员1 Player p2; //球员2 Player p3; //球员3 public Team(String name,Player p1,Player p2,Player p3){ this.name = name; this.p1 = p1; this.p2 = p2; this.p3 = p3; } //开始比赛 public void startGame(){ System.out.println(name+"开赛啦!!"); }}class Demo6 { public static void main(String[] args) { Player p1 = new Player(12,"梅西"); Player p2 = new Player(7,"C罗"); Player p3 = new Player(11,"内马尔"); //球队 Team t = new Team("恒大",p1,p2,p3); t.startGame(); System.out.println("名字:"+ t.p2.name); }}
/*目前存在的问题: 1. 无法描述清楚这两个类之间的继承关系。 2. 存在着重复代码。面向对象的三大特征: 1. 封装 2. 继承 3. 多态.继承:继承是通过关键字extends体现的。继承的格式: class 类名1 extends 类名2{ }继承要注意的事项: 1. 千万不要为了减少重复代码而去继承,只有真正存在着继承关系的时候才去继承。 2. 父类私有的成员不能被继承。 3. 父类的构造函数不能被继承。 4. 创建子类对象时默认会先调用父类无参的构造函数。*///人类 class Person{ String name; private int age; public Person(String name){ this.name = name; } public Person(){ System.out.println("Person类的构造方法被调用了...."); } public void eat(){ System.out.println(name+"在吃饭..."); }}//学生类class Student extends Person { // Student 就称作为Person类的子类, Person类就称作为Student的父类(超类、基类) int num; //学号 public Student(){ System.out.println("Student类的构造方法被调用了...."); } public void study(){ System.out.println(name+"good good study , day day up"); } }class Demo7 { public static void main(String[] args) { Student s = new Student(); /* s.name = "狗娃"; System.out.println("名字:"+ s.name); s.eat(); */ }}
/*疑问: 为什么要调用父类的构造方法啊?这样子做的意义在那? 调用父类 的构造方法是可以初始化从父类继承下去的属性的。*/ class Fu{ int x = 10; String name; public Fu(String name){ this.name = name; System.out.println("Fu类d带参的构造方法..."); } public Fu(){ System.out.println("Fu类无参的构造方法..."); }}class Zi extends Fu{ int x = 20; public Zi(String name){ super(name); //指定调用父类一个参数的构造函数。 } public void print(){ System.out.println("x1 = "+ x); }}class Demo8 { public static void main(String[] args) { Zi z = new Zi("大头儿子"); System.out.println("name= "+z.name); }}
0 0
- 继承详解
- 继承详解
- 继承详解
- C#继承详解
- EJB/JPA继承详解
- JavaScript 继承详解1
- JavaScript 继承详解2
- JavaScript 继承详解3
- JavaScript 继承详解4
- JavaScript继承详解
- JavaScript继承详解
- C#继承知识详解
- 多继承问题详解
- JavaScript继承详解[转]
- C++继承详解
- javascript继承详解
- JavaScript继承详解
- C++继承详解
- 打开ckeditor的图片上传功能
- hdu1042
- Java中数据解析之_JSON(Android官方内置解析器)
- CRB and String
- 深入分析C++中deque的使用
- 继承详解
- BZOJ 3118 Orz the MST 线性规划
- 如何在服务端保存用户上传的图片文件
- hihoCoder 1079 离散化(线段树离散化)
- 南邮新生赛题解
- 《Java设计模式》之访问者模式
- SPOJ 题目705 New Distinct Substrings(后缀数组,求不同的子串个数)
- VS报错:Oracle.ManagedDataAccess.Client.OracleException: ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
- hdoj-1869 六度分离【最短路径--dijkstra&&spfa&&floyd】