继承
类和类之间常见的关系
1:既然继承是描述类和类之间的关系,就需要先来了解类和类之间的常见关系
现实生活中的整体与部分
现实生活
1:学生 是人
2:狗 是动物
3:球队 包含 球员 整体与部分的关系,部分可以删除和增加
4:笔记本包含 cpu 整体与部分的关系,部分不可以删除和增加
5:航母编队 包含(航母 护卫舰 驱逐舰 舰载机 核潜艇)
java中类与类之间的关系
java中的类关系
球员—->球队 整体与部分关系 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);
}
}
例:假如你在某个公司工作,这个公司中的经理的待遇与普通员工的待遇存在着一些差异.不过,他们之间也存在着很多相同的地方,例如:他们都有自己的名字,编号,薪水.只是经理与员工的薪水存在这一定的差异,这种情况下我们就需要使用继承.
在Manager与Employee之间存在着明显is-a关系,每一个经理都是一名员工,is-a继承的一个明显的特征
class Manager extends Employee{
//添加方法和域
}
例如:
1:描述一个学生类
姓名年龄学号属性,学习的方法
2:描述一个工人类
姓名年龄工号属性,工作的方法
3:描述一个人类
姓名年龄属性,说话的方法。
发现学生类和人类天生有着联系,学生和工人都是人。所以人有的属性和行为学生和工人都会有。出现类代码重复
class Person {
String name;
int age;
// 静态变量(类变量)对象和对象之间的代码重复使用静态变量
static String country = "CN";
Person() {
}
void speak() {
System.out.println(name + ":哈哈,我是人!!!");
}
}
// 让学生类和人类产生关系,发现学生is a 人,就可以使用继承
class Student {
String name;
int age;
Student() {
}
void study() {
System.out.println("姓名:" + name + "年纪:" + age + ":好好学习");
}
}
class Worker {
String name;
int age;
void work() {
System.out.println(name + ":好好工作,好好挣钱。");
}
}
class Demo1 {
public static void main(String[] args) {
Student s = new Student();
s.name = "jack";
s.age = 20;
s.study();
Worker w = new Worker();
w.name = "rose";
w.work();
}
}
问题:
如果没有继承,出现类和类的关系无法描述
如果没有继承,类和类之间有关系会出现类和类的描述代码的重复。
继承的特点
1.描述类和类之间的关系
2.降低类和类之间的重复代码
3.降低对象和对象之间的代码重复使用静态变量
4.降低类和类之间的代码重复使用就继承
继承要注意的事项
扫描二维码关注公众号,回复:
1699424 查看本文章
1. 千万不要为了减少重复代码而去继承,只有真正存在着继承关系的时候才去继承。
2. 父类私有的成员不能被继承。
3. 父类的构造函数不能被继承。
4. 创建子类对象时默认会先调用父类无参的构造函数。