继承
概念
生活中我们经常听到一些名词,譬如富二代,官二代,红二代,穷二代,农二代等等,它代表中人与人之间的一种关系。那么程序当中怎么表示这种关系呢?
概念:描述两个类的关系的。在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("抓老鼠......");}}