继承
extends的意思是"扩展"。子类是父类的扩展。
Java中类只有单继承,没有多继承! (一个儿子只有一个爸爸,但是一个爸爸可以有多个儿子)
- 继承是类和类直接的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。
- 继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键词extends来表示
- 子类和父类之间,从意义上将应该具有"is a"的关系
我们先写一个类 Person类(人)
package src.opp.Day01;
//Person 人 :父类
public class Person {
}
然后我们再写一个学生类 Student类
package src.opp.Day01;
//学生 is 人 :派生类 , 子类;
public class Student extends Person{
}
怎么表示继承关系呢? 我们可以使用extends来表示
package src.opp.Day01;
//学生 is 人 :派生类 , 子类;
//子类继承父类,就会拥有父类的全部方法;
public class Student extends Person{ //Student(学生) extends(继承) Person(人)
//学生继承了人
}
这样Student类就可以继承Person类的所有东西了
当然我们也可以有其他的继承关系
我们在创建一个Teacher的类(老师)
package src.opp.Day01;
//Teacher is 人 :派生类 ,子类
public class Teacher extends Person{ // 老师继承了人
}
一样也可以继承Person类
extends是"扩展"的意思。 子类是父类的扩展。
Person类是父类
Student类和Teacher类是子类 也是派生类
我们在Person类里面输入
package src.opp.Day01;
//在java中,所有类,都默认直接或者间接继承opject
//Person 人 :父类
public class Person {
public void say() {
System.out.println("说了一句话");
}
}
然后我们到学生类Student里面,发现什么都没有 , 子类只是继承父类的所有东西
我们在新建一个类 Application这个类
在类里面new一个Person
package src.opp.Day01;
import src.opp.Day01.Student;
public class Application {
public static void main(String[] args) {
Student student = new Student();
student.say();
}
}
然后我们在接收一下这个对象, 就是person.say();
然后我们在执行一下
发现输出了Person类里面say方法的这一句话
子类继承了父类,就会拥有父类的全部方法
我们再在Person类里面输入public int money = 10_0000_0000;
package src.opp.Day01;
//在java中,所有类,都默认直接或者间接继承opject
//Person 人 :父类
public class Person {
public int money = 10_0000_0000;
public void say() {
System.out.println("说了一句话");
}
}
然后我们在到Application类里面输出一下
System.out.println(student.money);
就发现成功输出10亿
修饰符
我们属性用的都是 public
public 是公共的
private 是私有的
我们把Person类里面的public int money = 10_0000_0000;
public 给改成 private
就会发现Application类里面的money报错了
私有的是只能在这个类里面使用
私有的东西是无法继承的
当然修饰符我们也可以不写,不写的他默认的是default
还有一个修饰符是 protected 受保护的, 他的优先级高于private
private< default < protected < public
那私有的我们怎么去调用呢?
我们在下面使用get 和set
package src.opp.Day01;
//在java中,所有类,都默认直接或者间接继承opject
//Person 人 :父类
public class Person {
//public 公共的
//protected 受保护的 优先级高于private
//private 私有的
//如果不写的话,那就是默认的default
private int money = 10_0000_0000;
public void say() {
System.out.println("说了一句话");
}
public int getmMoney(){
return money
}
public void setMoney(int money){
this.money = money;
}
}
记住一个快捷键
Ctrl + H
同时按下去会在界面右边出现一个界面 ,
那个就是父类子类的图
你在哪个类里面按,就会出现哪个类图
然后我们可以发现一件事
不然我们在Person类里面按,还是Student里面按
上面都有一个Object 的
我们在Application类里面new 一个Person
然后再把Person类里面的所有东西给删掉
package src.opp.Day01;
import src.opp.Day01.Person;
import src.opp.Day01.Student;
public class Application {
public static void main(String[] args) {
Person person = new Person();
}
}
然后我们在里面person . 一下 点一下 就会发现里面有很多方法
所以在Java中,所有的类,都默认直接或者间接继承Object类