2022-07-23 第八组 韩文清

本文介绍了面向对象编程中的继承概念,包括类与类的关系、超类与子类、构造器和`super`与`this`的区别。重点讲解了方法的覆盖(重写)规则,以及final关键字的应用。通过实例演示了如何创建子类并重写父类方法。
摘要由CSDN通过智能技术生成

                                                      继承

面向对象-继承

1.类与类之间的关系

属性关系

参数关系

2. 继承关系(今天所学的内容)

举例:cat person animals biology的继承关系

 Person,猫cat,动物Animalsa  都可以叫做生物类Biology的子类
*     Animals是Biology类的直接子类
*     Person cat是Biology类的间接子类,person和cat是Animals的直接子类
*
*     超类
*     person cat直接父类是Animals,写在extends关键字后面的类
*     person cat间接父类是Biology
*
*     extends:继承
*     在java中,基础是单继承,一个子类只能有一个直接父类,但是可以有多个间接父类
*     extsnds后面只写一个类
      创建子类对象时,父类先被实例化,再去实例化子类
      当英格兰北实例化时,一定会先实例化它的直接父类和间接父类
 *子类的构造器可以有多个,但是必须和父类的构造器形式上统一
 例:如果父类没有空参构造器,子类一定没有无参构造器
 
super关键字;代表调用父类的结构(方法,属性,构造器)

在子类当中使用super调用父类的构造器时,super(age)必须是第一句话
在子类当中使用this调用父类的构造器时,this(age)必须是第一位句话
调构造器两者只能二选一

面试题;super和this的区别
super:调用父类的属性,super可以省略,不代表任何对象,
   super.age=20;
       调用父类的方法;
   super.drink();
   
this:调用当前类的属性,this可以省略,可以代表一个对象
   this.name=(" ");
     调用当前类的方法:
   this.drink();

3.继承可以干什么?

访问权限修饰符

public

protected 受保护的,不同包的子类可以访问

默认

private

4.方法的覆盖(复写,覆盖 override)

子类可以重写父类的方法,也可以利用到父类中方法已经运算过的结果,在运算的基础上

5.*方法的重写的规则: 前提:继承被继承的关系

访问权限: 重写的方法权限不能低于被重写的方法,开发中一般都是等于

返回值类型:重写的方法的返回值可以不一样,但是必须是被重写方法返回值的子类

方法名:必须一样 参数列表:参数类型 参数个数必须一样

抛出异常:重写的方法不能抛出比被重写的方法更大的异常

开发中,如果重写,基本就是一模一样,我们只变方法体

6.final 关键字:最终的

final可以修饰的结构:

1.类 public final class

最终类,终极类,没有任何类可以继承

2.属性 private final string name

修饰的常量 不能改变

常量的命名规则:单词的所有字母大写,如果是多个单词,用下划线分离

常量不能只声明,不赋值

public class Ch01 {
    private final String EMPLOYEE_NAME="哈哈";
    public Ch01(String name){
        this.name=name;

3.方法 private final void show

不能被重写,不能修饰构造器

方法重写的注解:建议在重写处标明重写的注解 Alt+shift+s

7.object 祖先类(最顶级父类)

如果一个类没有明确的写出它的父类是谁,那它的父类就是object

object类有11个方法

1.hashCode(); 它的返回值实际上就是对象运行时的内存地址

 Ch01 ch01 =new Ch01();
 System.out.println(ch01.hashCode());

2.equals(), 它和==没区别,比地址,为了让子类重写

3.toString(),转换成字符串 ,当我们直接使用对象时,会默认使用toString,为了让子类重写

4.finalize(),垃圾回收的方法

5.clone(),克隆,必须实现cLoneable接口

课堂实例:

public class Animal { String name; String age; private String id; public void say(){ System.out.println("动物叫"); } } 12345671234567123456789


 public class Cat extends Animal {
 String name="加菲猫";

 public void say(){
System.out.println("喵喵叫");
 }
 }

 public class Dog extends Animal{
 String name="哈士奇";

 public void say(){
 System.out.println("汪汪叫");
}
 }

私有属性

public void show(){ 
 super.sex="男";父类的属性
 this.sex="女";                      子类的属性
super.age;
super.getAge();         调用父类get方法,获得父类私有属性super.setAge(55);
                                     调用父类set方法,给父类私有属性赋值
}
面试题:
方法重载(overload)和方法重写(override)
类:
方法重载一个类有多个同名方法,
方法重写子类重写父类的方法
方法返回值
方法重载 可以不一样
方法重写:子类方法的返回值必须同父类一样
参数列表
方法重载必须不一样
方法重写必须是一样
Object类
Object类是所有类的父类
  一个类没有使用extends关键字标识继承关系,默认继承于Object类
  Java类中每个类都可以使用Object类所定义的方法
toString() 方法:把本对象属性值,用一个字符串形式输出,重写toString方法目的,主要是为查看此对象的属性值。
 hahscode() 方法:返回该对象的哈希码值
Final关键字
目的:阻断继承
  final 关键字 修饰类表示不允许继承 【abstract】
  final关键字 修饰方法表示不允许子类方法重写【override】
 final关键字 修饰成员变量子类不能修改 最终变量,只能赋值一次 (常量)
学习心得:今天学习了方法的继承,还有学习了方法的重写,经过了一天的练习,老师讲了很多东西,脑子里有点混沌,没有全部掌握,但是还有时间,我希望在以后的时间里,慢慢掌握老师所讲的东西 ,继续加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值