Java_Day09(final,多态,抽象类,接口)

1:final关键字(掌握)
    (1)是最终的意思,可以修饰类,方法,变量。
    (2)特点:
        A:它修饰的类,不能被继承。
        B:它修饰的方法,不能被重写。
        C:它修饰的变量,是一个常量。
    (3)面试相关:
        A:局部变量
            a:基本类型 值不能发生改变
            b:引用类型 地址值不能发生改变,但是对象的内容是可以改变的
        B:初始化时机
            a:只能初始化一次。
            b:常见的给值
                定义的时候。(推荐)
                构造方法中。
    
2:多态(掌握)
    (1)同一个对象在不同时刻体现出来的不同状态。
    (2)多态的前提:
        A:有继承或者实现关系。
        B:有方法重写。
        C:有父类或者父接口引用指向子类对象。
        
        多态的分类:
            a:具体类多态
                class Fu {}
                class Zi extends Fu {}
                
                Fu f = new Zi();
            b:抽象类多态
                abstract class Fu {}
                class Zi extends Fu {}
                
                Fu f = new Zi();
            c:接口多态
                interface Fu {}
                class Zi implements Fu {}
                
                Fu f = new Zi();
    (3)多态中的成员访问特点
        A:成员变量
            编译看左边,运行看左边
        B:构造方法
            子类的构造都会默认访问父类构造
        C:成员方法
            编译看左边,运行看右边
        D:静态方法
            编译看左边,运行看左边
            
        为什么?
            因为成员方法有重写。
    (4)多态的好处:
        A:提高代码的维护性(继承体现)
        B:提高代码的扩展性(多态体现)
    (5)多态的弊端:
        父不能使用子的特有功能。
        
        现象:
            子可以当作父使用,父不能当作子使用。
    (6)多态中的转型
        A:向上转型
            从子到父
        B:向下转型
            从父到子
    (7)孔子装爹的案例帮助大家理解多态
    (8)多态的练习
        A:猫狗案例
        B:老师和学生案例

3:抽象类(掌握)
    (1)把多个共性的东西提取到一个类中,这是继承的做法。
       但是呢,这多个共性的东西,在有些时候,方法声明一样,但是方法体。
       也就是说,方法声明一样,但是每个具体的对象在具体实现的时候内容不一样。
       所以,我们在定义这些共性的方法的时候,就不能给出具体的方法体。
       而一个没有具体的方法体的方法是抽象的方法。
       在一个类中如果有抽象方法,该类必须定义为抽象类。
    (2)抽象类的特点
        A:抽象类和抽象方法必须用关键字abstract修饰
        B:抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
        C:抽象类不能实例化
        D:抽象类的子类
            a:是一个抽象类。
            b:是一个具体类。这个类必须重写抽象类中的所有抽象方法。
    (3)抽象类的成员特点:
        A:成员变量
            有变量,有常量
        B:构造方法
            有构造方法
        C:成员方法
            有抽象,有非抽象
    (4)抽象类的练习
        A:猫狗案例练习
        B:老师案例练习
        C:学生案例练习
        D:员工案例练习
    (5)抽象类的几个小问题
        A:抽象类有构造方法,不能实例化,那么构造方法有什么用?
            用于子类访问父类数据的初始化
        B:一个类如果没有抽象方法,却定义为了抽象类,有什么用?
            为了不让创建对象
        C:abstract不能和哪些关键字共存
            a:final    冲突
            b:private 冲突
            c:static 无意义

4:接口(掌握)
    (1)回顾猫狗案例,它们仅仅提供一些基本功能。
       比如:猫钻火圈,狗跳高等功能,不是动物本身就具备的,
       是在后面的培养中训练出来的,这种额外的功能,java提供了接口表示。
    (2)接口的特点:
        A:接口用关键字interface修饰
            interface 接口名 {}
        B:类实现接口用implements修饰
            class 类名 implements 接口名 {}
        C:接口不能实例化
        D:接口的实现类
            a:是一个抽象类。
            b:是一个具体类,这个类必须重写接口中的所有抽象方法。
    (3)接口的成员特点:
        A:成员变量
            只能是常量
            默认修饰符:public static final
        B:构造方法
            没有构造方法
        C:成员方法
            只能是抽象的
            默认修饰符:public abstract
    (4)类与类,类与接口,接口与接口
        A:类与类
            继承关系,只能单继承,可以多层继承
        B:类与接口
            实现关系,可以单实现,也可以多实现。
            还可以在继承一个类的同时,实现多个接口
        C:接口与接口
            继承关系,可以单继承,也可以多继承
    (5)抽象类和接口的区别(自己补齐)?
        A:成员区别
            抽象类:
            接口:
        B:关系区别:
            类与类:
            类与接口:
            接口与接口:
        C:设计理念不同
            抽象类:is a,抽象类中定义的是共性功能。
            接口:like a,接口中定义的是扩展功能。
    (6)练习:
        A:猫狗案例,加入跳高功能
        B:老师和学生案例,加入抽烟功能0

时间: 2024-10-08 14:46:11

Java_Day09(final,多态,抽象类,接口)的相关文章

黑马程序员--java基础之多态,抽象类,接口,匿名内部类

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 4.4 子类的实例化过程 子类中所有的构造函数默认都会访问父类中空参数的构造函数. 因为每一个构造函数的第一行都有一条默认的语句super();. 子类会具备父类中的数据,所以要先明确父类是如何对这些数据初始化的. 为什么子类实例化的时候要访问父类中的构造函数呢? 那是因为子类继承了父类,获取到了父类中内容(属性),所以在使用父类内容之前,要先看父类是如何对自己的内容进行初始化的. P.S.

java----基础(this,继承,多态,抽象类,接口)

this指针 this指针在类定义时用到,this属于用类实例化的对象,只能在定义类的时候使用:(在下面的代码中会有体现) 类变量&类方法 定义: 访问修饰符 static+数据类型+变量名 所有该类的对象均可访问,均可修改,不会在调用后初始化,相当于全局变量. 可以被所有对象访问到,并且可以通过类访问到  类名.类变量 静态方法 == 类方法 可以被类名和对象访问到 原则上类变量用类方法来访问 类方法中不能访问非类变量,类变量可以被非类方法访问. 四种访问控制符: public : 对外公开

JAVA基础笔记(很实用)继承-多态-抽象类-接口-异常-集合-IO-线程-Socket

第七章:Java继承 一.继承的概念 1.一个父类派生出一个子类的机制称为继承. 2.承是重用程序代码的有力手段,当多个类之间存在相同的属性和方法时,可以从这些类中抽象出父类. 3.们只需要在父类中定义这些属性和方法,而子类无须重新定义这些属性和方法,直接从父类继承即可. 4.通过继承,子类就会自动的拥有在父类中定义的属性和方法. 5.两个或多个类的成员中存在一部分相同的情况,通过继承机制,可以利用现有的类来创建新的类. 6.子类不但拥有父类的成员,还可以定义新的成员. 7.可以提高软件的可重用

06 面向对象:多态&抽象类&接口&权限修饰符&内部类

多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父类),运行看左边(父类). * 成员方法 * 编译看左边(父类),运行看右边(子类).动态绑定 * 静态方法 * 编译看左边(父类),运行看左边(父类). * (静态和类相关,算不上重写,所以,访问还是左边的) * 只有非静态的成员方法,编译看左边,运行看右边 */ class Demo_Polym

2019-05-17 Java学习日记之面向对象_多态&抽象类&接口

多态 多态的概述: A:多态(polymorphic) 事物存在的多种形态 B:多态前提 a:要有继承关系 b:要有方法重写c:要有父类引用指向子类对象 多态中的成员访问特点之成员变量: 成员变量:编译看左边(父类),运行看左边(父类)多态中的成员访问特点之成员方法:成员方法:编译看左边(父类),运行看右边(子类)多态中的成员访问特点之静态成员方法:静态方法:编译看左边(父类),运行看左边(父类)(静态和类相关,算不上重写,所以访问还是左边的)只有非静态的成员方法,编译看左边,运行看右边 多态的

JavaSE知识-09(面向对象_多态&抽象类&接口)

多态的概述及其代码体现 多态(polymorphic)概述 事物存在的多种形态 多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. class Demo1_Polymorphic { public static void main(String[] args) { Cat c = new Cat(); c.eat(); Animal a = new Cat(); //猫是一只动物 //父类引用指向子类对象 a.eat(); } } class Animal { pu

PHP中多态,抽象类,接口,

小例子: 需求:公司定义一个接口让我们开发功能 usb.interface.php: 1 <?php 2 interface USB{ 3 4 public function run(); 5 } store.class.php: 1 <?php 2 include_once("./usb.interface.php"); 3 class store implements USB{ 4 5 public function run(){ 6 $this -> initi

JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展

JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来聊聊final这个关键字 final可以修饰类,方法和变量 final修饰的类不可以被继承 final修饰的方法不可以被覆盖 final修饰的变量是一个常量,只能被赋值一次 内部类只能访问被final修饰的局部变量 final,故名思意,就是最终的意思,由以上的五种特性,不过final的出现,也是有

JAVA笔记6__抽象类/接口/多态/instanceof关键字、父类设计法则

/** * 抽象类:很多具有相同特征和行为的类可以抽象为一个抽象类 * 1.抽象类可以没有抽象方法,有抽象方法的类必须是抽象类 * 2.非抽象类继承抽象类必须实现抽象方法[可以是空实现] * 3.抽象类可以有方法和属性 * 4.抽象类不能被实例化 * 5.抽象类不能声明为final * 6.抽象类可以有构造方法[不代表实例化对象] */ public class Main { public static void main(String[] args) { Goddess m1 = new Go