Java - 面向对象进阶 - (static、继承、多态)

Java - 面向对象进阶 - (static、继承、多态)_第1张图片1 Static - 静态变量

1.1 static-静态变量

Java - 面向对象进阶 - (static、继承、多态)_第2张图片

Java - 面向对象进阶 - (static、继承、多态)_第3张图片

如果想要多个对象都共享同一个值那我只需要在public后面添加static

Java - 面向对象进阶 - (static、继承、多态)_第4张图片

public static String teacherName;

只需要对s1进行复制,前面添加static之后也可以用类名进行调用赋值

Java - 面向对象进阶 - (static、继承、多态)_第5张图片

Java - 面向对象进阶 - (static、继承、多态)_第6张图片Java - 面向对象进阶 - (static、继承、多态)_第7张图片

Java - 面向对象进阶 - (static、继承、多态)_第8张图片

Java - 面向对象进阶 - (static、继承、多态)_第9张图片

Java - 面向对象进阶 - (static、继承、多态)_第10张图片Java - 面向对象进阶 - (static、继承、多态)_第11张图片


 1.2 static-静态方法和工具类        

Java - 面向对象进阶 - (static、继承、多态)_第12张图片

Java - 面向对象进阶 - (static、继承、多态)_第13张图片

Java - 面向对象进阶 - (static、继承、多态)_第14张图片

JavaBean类:Java - 面向对象进阶 - (static、继承、多态)_第15张图片

工具类:

Java - 面向对象进阶 - (static、继承、多态)_第16张图片

测试类:Java - 面向对象进阶 - (static、继承、多态)_第17张图片


Java - 面向对象进阶 - (static、继承、多态)_第18张图片


Java - 面向对象进阶 - (static、继承、多态)_第19张图片

Java - 面向对象进阶 - (static、继承、多态)_第20张图片

Java - 面向对象进阶 - (static、继承、多态)_第21张图片

静态的东西,一般都是共享的,所以跟某一个对象是没有什么关系的 ,所以在静态方法中就没this关键字

Java - 面向对象进阶 - (static、继承、多态)_第22张图片

Java - 面向对象进阶 - (static、继承、多态)_第23张图片

Java - 面向对象进阶 - (static、继承、多态)_第24张图片Java - 面向对象进阶 - (static、继承、多态)_第25张图片Java - 面向对象进阶 - (static、继承、多态)_第26张图片

Java - 面向对象进阶 - (static、继承、多态)_第27张图片

Java - 面向对象进阶 - (static、继承、多态)_第28张图片


了解即可,以前键盘输入方式,现在可以用Scanner,不需要用

Java - 面向对象进阶 - (static、继承、多态)_第29张图片

Java - 面向对象进阶 - (static、继承、多态)_第30张图片


2 继承

2.1 继承的概述

Java - 面向对象进阶 - (static、继承、多态)_第31张图片Java - 面向对象进阶 - (static、继承、多态)_第32张图片

Java - 面向对象进阶 - (static、继承、多态)_第33张图片

Java - 面向对象进阶 - (static、继承、多态)_第34张图片

子类可以在父类的基础上再次添加方法

Java - 面向对象进阶 - (static、继承、多态)_第35张图片

Java - 面向对象进阶 - (static、继承、多态)_第36张图片

Java - 面向对象进阶 - (static、继承、多态)_第37张图片


2.2 继承的特点和继承体系的设计

Java只支持单继承,不支持多继承,但支持多层继承

单继承:一个子类只能继承一个父类。(一个儿子只有一个爸爸)

不支持多继承:子类不能同时继承多个父类。(一个儿子不能有多个爸爸)

Java只支持单继承、不支持多继承、但支持多层继承

多层继承:子类A继承父类B,父类B可以继承父类C(儿子->爸爸->爷爷)


产生如下问题,多继承就会产生,子类不知道调用两个父类中的哪个方法

Java - 面向对象进阶 - (static、继承、多态)_第38张图片


Java - 面向对象进阶 - (static、继承、多态)_第39张图片

Java - 面向对象进阶 - (static、继承、多态)_第40张图片


子类只能访问父类中非私有的成员

Java - 面向对象进阶 - (static、继承、多态)_第41张图片

Java - 面向对象进阶 - (static、继承、多态)_第42张图片


2.3 子类到底能继承父类中的哪些内容

误区1:父类私有的东西,子类就无法继承

误区2:父类中非私有的成员,就被子类继承下来了

Java - 面向对象进阶 - (static、继承、多态)_第43张图片

Java - 面向对象进阶 - (static、继承、多态)_第44张图片

父类的构造方法不能被子类继承(父类的构造方法的类名跟子类根本不相同)

虽然子类继承了父类的成员变量但是父类私有的成员变量子类不能直接调用(get/set)Java - 面向对象进阶 - (static、继承、多态)_第45张图片Java - 面向对象进阶 - (static、继承、多态)_第46张图片Java - 面向对象进阶 - (static、继承、多态)_第47张图片Java - 面向对象进阶 - (static、继承、多态)_第48张图片Java - 面向对象进阶 - (static、继承、多态)_第49张图片Java - 面向对象进阶 - (static、继承、多态)_第50张图片Java - 面向对象进阶 - (static、继承、多态)_第51张图片

Java - 面向对象进阶 - (static、继承、多态)_第52张图片


 2.4 继承中成员变量和成员方法的访问特点

Java - 面向对象进阶 - (static、继承、多态)_第53张图片

继承中:成员变量的访问特点

继承中成员变量的访问特点 : 就近原则:谁离我近,我就用谁

Java - 面向对象进阶 - (static、继承、多态)_第54张图片

Java - 面向对象进阶 - (static、继承、多态)_第55张图片

Java - 面向对象进阶 - (static、继承、多态)_第56张图片

继承中:成员方法的访问特点

Java - 面向对象进阶 - (static、继承、多态)_第57张图片Java - 面向对象进阶 - (static、继承、多态)_第58张图片Java - 面向对象进阶 - (static、继承、多态)_第59张图片

方法的重写(覆盖):当父类的方法不能满足子类现在的需求,需要进行方法重写

方法的重载跟重写不同,必须保证方法名和参数一致,其他无所谓

Java - 面向对象进阶 - (static、继承、多态)_第60张图片Java - 面向对象进阶 - (static、继承、多态)_第61张图片

Java - 面向对象进阶 - (static、继承、多态)_第62张图片

Java - 面向对象进阶 - (static、继承、多态)_第63张图片

Java - 面向对象进阶 - (static、继承、多态)_第64张图片Java - 面向对象进阶 - (static、继承、多态)_第65张图片


继承中:构造方法的访问特点

父类中的构造方法不能被子类继承

子类构造方法中隐藏的super()去访问父类的无参构造

Java - 面向对象进阶 - (static、继承、多态)_第66张图片Java - 面向对象进阶 - (static、继承、多态)_第67张图片

Java - 面向对象进阶 - (static、继承、多态)_第68张图片

带参构造方法:

Java - 面向对象进阶 - (static、继承、多态)_第69张图片

Java - 面向对象进阶 - (static、继承、多态)_第70张图片

this、super关键字

Java - 面向对象进阶 - (static、继承、多态)_第71张图片

Java - 面向对象进阶 - (static、继承、多态)_第72张图片
Java - 面向对象进阶 - (static、继承、多态)_第73张图片Java - 面向对象进阶 - (static、继承、多态)_第74张图片

Java - 面向对象进阶 - (static、继承、多态)_第75张图片

Java - 面向对象进阶 - (static、继承、多态)_第76张图片

3 多态

3.1 认识多态

Java - 面向对象进阶 - (static、继承、多态)_第77张图片Java - 面向对象进阶 - (static、继承、多态)_第78张图片

Java - 面向对象进阶 - (static、继承、多态)_第79张图片Java - 面向对象进阶 - (static、继承、多态)_第80张图片

Java - 面向对象进阶 - (static、继承、多态)_第81张图片


3.2 多态中调用成员的特点

调用成员变量:编译看左边,运行也看左边

  • 编译看左边:javac编译代码的时候,会看左边的父类中有没有在这个成员变量,如果有,编译成功,如果没有编译失败。
  • 运行也看左边:java运行代码的时候,实际获取的就是左边父类中成员变量的值

调用成员方法:编译看左边,运行看右边

  • 编译看左边:javac编译代码的时候,会看左边的父类中有没有这个方法,如果有,编译成功,如果没有编译失败。
  • 运行看右边:java运行代码的时候,实际上运行的是子类中的方法

Java - 面向对象进阶 - (static、继承、多态)_第82张图片

Java - 面向对象进阶 - (static、继承、多态)_第83张图片Java - 面向对象进阶 - (static、继承、多态)_第84张图片

Java - 面向对象进阶 - (static、继承、多态)_第85张图片


 3.3 多态的优势和弊端

Java - 面向对象进阶 - (static、继承、多态)_第86张图片

解决上述问题:只需要变回子类类型就可以了

Java - 面向对象进阶 - (static、继承、多态)_第87张图片

Java - 面向对象进阶 - (static、继承、多态)_第88张图片

Java - 面向对象进阶 - (static、继承、多态)_第89张图片


 3.4 多态的综合练习

Java - 面向对象进阶 - (static、继承、多态)_第90张图片

多态改写如下

Java - 面向对象进阶 - (static、继承、多态)_第91张图片


3.5 包和final

3.5.1 包

Java - 面向对象进阶 - (static、继承、多态)_第92张图片

Java - 面向对象进阶 - (static、继承、多态)_第93张图片

Java - 面向对象进阶 - (static、继承、多态)_第94张图片

Java - 面向对象进阶 - (static、继承、多态)_第95张图片

3.5.2 final 

final最终的,不可改变的

Java - 面向对象进阶 - (static、继承、多态)_第96张图片

Java - 面向对象进阶 - (static、继承、多态)_第97张图片

Java - 面向对象进阶 - (static、继承、多态)_第98张图片

重新赋值S = new Student()报错,不能改变地址值

Java - 面向对象进阶 - (static、继承、多态)_第99张图片

常量记录的数据是不能发生改变的,引用数据类型的记录的地址不能发生改变,内部的属性值还是可以改变的。String地址和数值都不能改变(private + final 又没有提供get+set方法)Java - 面向对象进阶 - (static、继承、多态)_第100张图片

Java - 面向对象进阶 - (static、继承、多态)_第101张图片


3.6 权限修饰符和代码块 

Java - 面向对象进阶 - (static、继承、多态)_第102张图片

Java - 面向对象进阶 - (static、继承、多态)_第103张图片

private 修饰只能在同一个类中去用,不能在同一个包下的其他类去使用(要想用只能用get和set方法)
空着不写 同一个类中或者同一个包下的其他类都可以使用
protected 同一个类,同一个包其他类,不同包下的子类都可以,但是不同包下的无关类不给

Java - 面向对象进阶 - (static、继承、多态)_第104张图片

Java - 面向对象进阶 - (static、继承、多态)_第105张图片

Java - 面向对象进阶 - (static、继承、多态)_第106张图片

Java - 面向对象进阶 - (static、继承、多态)_第107张图片


Java - 面向对象进阶 - (static、继承、多态)_第108张图片

Java - 面向对象进阶 - (static、继承、多态)_第109张图片

Java - 面向对象进阶 - (static、继承、多态)_第110张图片

Java - 面向对象进阶 - (static、继承、多态)_第111张图片

Java - 面向对象进阶 - (static、继承、多态)_第112张图片

Java - 面向对象进阶 - (static、继承、多态)_第113张图片

虽然抽象类不能实例化也就是不能创建对象,那么要构造方法的作用是什么呢?作用就是子类创建对象时调用super,给子类的睡醒进行赋值的。

Java - 面向对象进阶 - (static、继承、多态)_第114张图片


Java - 面向对象进阶 - (static、继承、多态)_第115张图片

Java - 面向对象进阶 - (static、继承、多态)_第116张图片


Java - 面向对象进阶 - (static、继承、多态)_第117张图片

Java - 面向对象进阶 - (static、继承、多态)_第118张图片

Java - 面向对象进阶 - (static、继承、多态)_第119张图片


接口

Java - 面向对象进阶 - (static、继承、多态)_第120张图片

Java - 面向对象进阶 - (static、继承、多态)_第121张图片

Java - 面向对象进阶 - (static、继承、多态)_第122张图片

Java - 面向对象进阶 - (static、继承、多态)_第123张图片


Java - 面向对象进阶 - (static、继承、多态)_第124张图片

Java - 面向对象进阶 - (static、继承、多态)_第125张图片

接口里面的静态方法不用重写,也不允许重写,只允许通过接口去调用方法

Java - 面向对象进阶 - (static、继承、多态)_第126张图片

Java - 面向对象进阶 - (static、继承、多态)_第127张图片

Java - 面向对象进阶 - (static、继承、多态)_第128张图片

Java - 面向对象进阶 - (static、继承、多态)_第129张图片

Java - 面向对象进阶 - (static、继承、多态)_第130张图片

Java - 面向对象进阶 - (static、继承、多态)_第131张图片

Java - 面向对象进阶 - (static、继承、多态)_第132张图片

Java - 面向对象进阶 - (static、继承、多态)_第133张图片

Java - 面向对象进阶 - (static、继承、多态)_第134张图片
Java - 面向对象进阶 - (static、继承、多态)_第135张图片


内部类

Java - 面向对象进阶 - (static、继承、多态)_第136张图片

Java - 面向对象进阶 - (static、继承、多态)_第137张图片

Java - 面向对象进阶 - (static、继承、多态)_第138张图片

Java - 面向对象进阶 - (static、继承、多态)_第139张图片


成员内部类

Java - 面向对象进阶 - (static、继承、多态)_第140张图片

Java - 面向对象进阶 - (static、继承、多态)_第141张图片

Java - 面向对象进阶 - (static、继承、多态)_第142张图片Java - 面向对象进阶 - (static、继承、多态)_第143张图片

Java - 面向对象进阶 - (static、继承、多态)_第144张图片

Java - 面向对象进阶 - (static、继承、多态)_第145张图片

Java - 面向对象进阶 - (static、继承、多态)_第146张图片

Java - 面向对象进阶 - (static、继承、多态)_第147张图片


静态内部类

Java - 面向对象进阶 - (static、继承、多态)_第148张图片

Java - 面向对象进阶 - (static、继承、多态)_第149张图片

Java - 面向对象进阶 - (static、继承、多态)_第150张图片

Java - 面向对象进阶 - (static、继承、多态)_第151张图片


局部内部类(一般没什么用)

Java - 面向对象进阶 - (static、继承、多态)_第152张图片

Java - 面向对象进阶 - (static、继承、多态)_第153张图片


匿名内部类

Java - 面向对象进阶 - (static、继承、多态)_第154张图片

Java - 面向对象进阶 - (static、继承、多态)_第155张图片

Java - 面向对象进阶 - (static、继承、多态)_第156张图片

你可能感兴趣的:(Java,java,开发语言)