> 文章列表 > JavaSE基础(18) 继承

JavaSE基础(18) 继承

JavaSE基础(18) 继承

继承

概念

生活中我们经常听到一些名词,譬如富二代,官二代,红二代,穷二代,农二代等等,它代表中人与人之间的一种关系。那么程序当中怎么表示这种关系呢?

概念:描述两个类的关系的。在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类(派生类,SubClass),现有类被称作父类(超类,SuperClass),子类会自动拥有父类所有非私有的属性方法

意义:

        A:避免重复的代码。(从子类的角度)

        B:扩展类的功能。(从父类的角度)

继承性:子类,父类。存在继承关系。

        子类对象,可以直接访问父类的非私有的属性和方法。(避免重复代码)

        子类也可以新增自己的属性和方法。(扩展类的功能)

        子类可以重新实现父类已有的方法。(扩展类的功能)

语法:

        父类:A类

        子类:B类 extends 父类A

语法结构:

class 父类{}class 子类 extends 父类{}

extends 关键字:表示两个类是继承关系。

public class Person {String name;int age;public void eat(){System.out.println("吃东西。。。。。");}public void sleep(){System.out.println("睡觉");}
}/* extends关键字:表示两个类是继承关系。*/
public class Student extends Person{String school;//@Override可以不加,但是如果加上,子类的重写的方法一定要和父类的那个方法名相同public void eat(){System.out.println("学生吃东西。。。。。");}public void study(){System.out.println("学习了。。。。。");}}//父类的创建Person p1 = new Person();p1.name = "乔布斯";p1.age = 55;p1.eat();p1.sleep();//p1.study();父类无法访问子类新增的方法和属性Student stu = new Student();stu.name = "小学生";stu.age = 34;stu.eat();stu.sleep();stu.school = "清华";stu.study();//子类肯定可以访问新增的方法

继承中的构造方法

public class Animal {private String type;int age;String color;public Animal(){System.out.println("父类Animal无参构造函数......");}public Animal(String type, int age, String color) {System.out.println("父类Animal有参构造函数......");this.type = type;this.age = age;this.color = color;}public void eat(){System.out.println("动物吃东西.....");}public void print(){System.out.println("type:"+type+";age:"+age+";color:"+color);}
}
//继承父类非私有的属性和方法
public class Cat extends Animal{public Cat(){System.out.println("子类Cat无参构造......");}public Cat(String type,int age,String color,String name){super(type,age,color);//super()指代父类构造函数的时候,也只能放在第一句,如果显式调用了某个构造函数,就不会默认调用无参构造了System.out.println("子类Cat有参构造函数......");//        this.age = age;
//        this.color = color;this.name = name;}//新增一些属性和方法String name;//重新实现父类的方法
//    @Override//相当于加了约束,
//    public void eat(){
//        System.out.println("猫吃鱼........");
//    }public void catchMouse(){System.out.println("抓老鼠......");}}