继承

来源:互联网 发布:淘宝内部优惠券靠谱吗? 编辑:程序博客网 时间:2024/06/05 21:10

在现实生活中事物与事物之间是存在关系.


1.球员---->球队  整体与部分关系   has 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;   //球员2Player p3;  //球员3public  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);}}

        2.学生----->人    继承的关系      is a 关系  

 
目前存在的问题:
1. 无法描述清楚这两个类之间的继承关系。
2. 存在着重复代码。


面向对象的三大特征:
1. 封装
2. 继承
3. 多态.

继承:继承是通过关键字extends体现的。


继承的格式:
class 类名1 extends 类名2{

}

继承要注意的事项:
1. 千万不要为了减少重复代码而去继承,只有真正存在着继承关系的时候才去继承。
2. 父类私有的成员不能被继承。
3. 父类的构造函数不能被继承。
4. 创建子类对象时默认会先调用父类无参的构造函数。


//人类 class Person{String name;privateint 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
原创粉丝点击