5-1面向对象编程(中)----面向对象特征之二: 继承性

面向对象特征之二: 继承性

一、继承性的好处
1.减少了代码的冗余,提高了代码的复用性。
2.便于功能的扩展。
3.为之后多态性的使用,提供了前提。
!!!注意:不要仅为了获取其他类中某个功能而去继承
二、继承性的格式:class A extends B{}
1.A:子类、派生类、subclass
2.B:父类、超类、基类、superclass
3.体现:一旦子类A继承父类B以后,子类A中就获取了父类B中声明的结构、属性、方法。
①特别的:父类中声明为private的属性或犯法,子类继承父类以后,仍然认为获取了父类中私有的结构。知识因为封装性的影响,使得子类不能直接调用父类的结构而已。
②子类继承父类以后,还可以声明自己特有的属性或方法,实现功能的拓展。
③子类和父类的关系,不同于子类和集合的关系。

三、Java中关于继承性的规定:只支持单继承和多层继承,不允许多重继承。
1.Java中一个类可以被多个子类继承。
2.一个类中只能有一个父类,一个父类可以派生出多个子类。
3.字符类是相对的概念,可以多层继承。
4.子类直接继承的父类,称为:直接父类。间接继承的父类称为:间接父类。
5.子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法。

在这里插入图片描述

四、1.如果我么你没有显式地声明一个类的父类地话,则此类继承于java.lang.Object类
2.所以的java类(除java.lang.Object类之外)都直接或间接的继承于java.lang.Object类。
3.意味着,所有的java类都具有java.lang.Object类声明的功能。

Creature类:

public class Creature {
 public void breath() {
  System.out.println("呼吸");
 }
}

Person类:

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 int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public void eat() {
  System.out.println("吃饭");
 }
 public void sleep() {
  System.out.println("睡觉");
 } 
}

Student类:

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());
 }//私有情况下同样能够继承并调用,但不能直接调用
}

ExtendsTest类:

public class ExtendsTest {
 public static void main(String[] args) {
  Person p1 = new Person();
//  p1.age = 1;
  p1.eat();
  Student s1 = new Student();
//  s1.age = 2;
  s1.eat();
  s1.study();
  s1.name = "Mark";
  s1.setAge(10);//私有情况下同样能够继承并调用。
  System.out.println(s1.getAge());
  s1.breath();
  Creature c = new Creature();
  System.out.println(c.toString());//
 }
}

输出:

吃饭
吃饭
学习
10
呼吸
java1.Creature@1e643faf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YY鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值