java学习3

目录

面向对象——多态

什么是多态

多态的前提

多态有什么好处?

1.包的作用?

2.包名书写的规则?

3.什么时候需要导包?什么时候不需要导包?

final 修饰符

 权限修饰符

4种权限修饰符的范围

 抽象方法和抽象类

 接口

接口的定义和使用

 接口中成员的特点

 接口和类之间的关系

类和类的关系

类和接口的关系

接口和接口的关系

内部类

内部类的访问特点

 成员内部类

 静态内部类

局部内部类

匿名内部类(重点)


面向对象——多态

什么是多态

多态是面向对象三大特征之一,是对象的多种形态

多态的前提

1.有继承/实现关系

2.有父类引用指向子类对象

3.有方法的重写

多态有什么好处?

使用父类型作为参数,可以接收所有子类对象,体现多态的拓展性与遍历

多态变量编译看左边,运行也看左边,多态方法编译看左边,运行看右边

1.包的作用?

包就是文件夹,用来管理各种不同功能的Java类

2.包名书写的规则?

需要全部英文小写,见名知意

公司域名反写+包的作用,

3.什么时候需要导包?什么时候不需要导包?

使用同一个包中的类时,不需要导包
使用java.lang包中的类时,不需要导包,
其他情况都需要导包
需要用全类名
如果同时使用两个包中的同名类,要写全类名(包名+类名)

final 修饰符

final修饰方法,该方法不能被重写

final修饰类,该类不能被继承

final修饰变量,叫做常量,值不能改变

 权限修饰符

权限修饰符:是用来控制一个成员能够被访问的范围的

可以修饰成员变量,方法,构造方法,内部类

4种权限修饰符的范围

 抽象方法和抽象类

抽象方法:将共性的行为(方法)抽取到父类之后。由于每一个子类执行的内容是不一样所以,在父类中不能确定具体的方法体该方法就可以定义为抽象方法。

疑问:既然每个子类又要重新写每个方法,那何不父类不定义这个类?反正每个子类又要写

原因:写到父类可以约束子类方法的命名,方便后序的查看,也避免不同子类此方法命名不一样情况

抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类

 抽象类不能实例化即不能创建对象

 

 接口

接口的定义和使用

接口用关键字interface来定义

public interface 接口名 {}

接口不能实例化(不能创建对象)

接口和类之间是实现关系,通过implements关键字表示

 接口中成员的特点

1.成员变量只能是常量

默认修饰符:public static final

2.没有构造方法

3.方法只能是抽象方法

 接口和类之间的关系

类和类的关系

继承关系,只能单继承,不能多继承,但是可以多层继承

类和接口的关系

实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

接口和接口的关系

继承关系,可以单继承,也可以多继承

 1.接口代表规则,是行为的抽象。想要让哪个类拥有~个行为,就让这个类实现对应的接口就可以了。
2.当一个方法的参数是接口时,可以传递接口所有实现类的对象,这种方式称之为接口多态。

 

内部类

定义:在一个类的里面,再定义一个类。举例:在A类的内部定义B类,B类就被称为内部类

类的五大成员

属性,方法、构造方法、代码块、内部类

 内部类表示的事物是外部类的一部分,内部类单独出现没有任何意义

比如上面的发动机,独立出来没有太大的意义

内部类的访问特点

内部类可以直接访问外部类的成员,包括私有

外部类要访问内部类的成员,必须创建对象

 成员内部类

写在成员位置的,属于外部类的成员,比如:private,默认,protected,public,static等

成员内部类可以被一些修饰符所修饰在成员内部类里面,

JDK16之前不能定义静态变量,JDK16开始才可以定义静态变量。

 静态内部类

1.静态内部类也是成员内部类中的一种

2.静态内部类只能访问外部类中的静态变量和静态方法,

 如果想要访问非静态的需要创建外部类的对象。

创建静态内部类对象的格式:
外部类名.内部类名 对象名 = new 外部类名.内部类名();
调用静态方法的格式:
外部类名.内部类名.方法名();

局部内部类

1.将内部类定义在方法里面就叫做局部内部类,类似于方法里面的局部变量。

2.外界是无法直接使用,需要在方法内部创建对象并使用。

3.该类可以直接访问外部类的成员,也可以访问方法内的局部变量。

匿名内部类(重点)

1.什么是匿名内部类?

隐藏了名字的内部类,可以写在成员位置,也可以写在局部位置

 3.格式的细节
包含了继承或实现,方法重写,创建对象。
整体就是一个类的子类对象或者接口的实现类对象

4.使用场景
当方法的参数是接口或者类时以接口为例,可以传递这个接口的实现类对象,如果实现类只要使用一次,就可以用匿名内部类简化代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

3分人生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值