继承详解

来源:互联网 发布:华为网络认证多少钱 编辑:程序博客网 时间: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
原创粉丝点击