一、继承性的好处
①减少代码的冗余,提高代码的复用性
②便与功能的扩展
③为之后的多态性的使用提供了前提。
二、继承性的格式 :class A extends B{}
A:子类、派生类、subclass
B: 父类、超类、基类、superclass
2.1体现:一旦子类A继承父类B以后,子类就获取了父类B中声明的所有的结构:属性、方法
特别的,父类中声明为private的属性和方法,子类继承父类以后,仍然认为获取了父类中的结构。
只是因为封装性的影响,使得子类不能直接调用父类的结构而已。
2.2 子类继承父类以后,还可以声明自己特有的属性或方法,实现功能的扩展
extend:延展、扩展
三、java中关于继承的规定:
1.一个类可以被多个子类继承
2.java中类的单继承性:一个类只能有有一个父类
3.子父类是相对的概念。
4.子类直接继承的父类,称为:直接父类。间接继承的父类称为:间接父类
5.子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法
四、 1.如果我们没有显式的声明一个类的父类的话,则此类继承于java.lang.Object类
2.所有的java类(除java.lang.Object类之外)都直接或间接的继承于java.lahg.Object类
3.意味着,所有的java类具有java.lang.Object类声明的功能
代码:
package com.atguigu.java;
//Person.java
public class Person extends Creature{
String name;
private int age;
public Person(){}
public Person(String name, int age){
this.name=name;
this.age=age;
}
public void eat(){
System.out.println("吃饭");
sleep();
}
private void sleep(){
System.out.println("睡觉");
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package com.atguigu.java;
//Student.java
public class Student extends Person{
// String name;
// int age;
String major;
public Student(){
}
public Student(String name,int age,String major){
this.name=name;
// this.age=age;
setAge(age);
this.major=major;
}
// public void eat(){
// System.out.println("吃饭");
// }
// public void sleep(){
// System.out.println("睡觉");
// }
public void study(){
System.out.println("学习");
}
public void show(){
System.out.println("name:"+name+",age:"+getAge());
}
}
package com.atguigu.java;
//Creature.java
public class Creature {
public void breath(){
System.out.println("呼吸");
}
}
package com.atguigu.java;
//ExtendsTest
public class ExtendsTest {
public static void main(String[] args) {
Person p1 = new Person();
// p1.age=1;
p1.eat();
System.out.println("*****************************");
Student s1 =new Student();
s1.eat();
// s1.sleep();
s1.name="Tom";
s1.setAge(10);
System.out.println(s1.getAge());
s1.breath();
Creature creature = new Creature();
System.out.println(creature.toString());
}
}