javase第十四天:面向对象总结(四种封装性,static/final/abstract,super/this,interface/implements,import/package)

一、四种封装性(前文已经讲到)

二、static/final/abstract

1.static

1.1 static修饰的对象

①类无法修饰
②属性,方法,代码块,内部类

构造器无法修饰,构造器只有造对象时才会使用

1.2static存储机制

①静态属性与非静态属性

静态属性即多个对象公用一个静态属性,而非静态属性是多个对象都有自己的一套静态属性

静态属性早于对象的加载,即静态属性是随着类的加载而加载的。

静态属性只加载一次,存在方法区的静态域中,可以通过类和对象访问。

静态属性可以通过类和对象访问,非静态属性只能通过对象访问

静态属性不能使用super和this表示本对象的关键字

②内存解析

main方法之前,方法区中会加载类的信息,静态域,常量池。此时即会运行静态的代码块,保存静态变量,静态方法

然后,有引用保存new出的对象的地址,栈中保存局部变量,堆中保存new出的对象

2.final

2.1final修饰的对象

①类

表明该类不可以被继承

②属性,方法,内部类

属性表明该属性不可被更改

方法表明该属性不可被重写

内部类表明该类不能被继承

2.2final的使用

final的属性赋值可以在显式初始化,代码块中,构造器中,但是不能再方法中赋值。因为此时已将对象的结构载入堆中,而此时不调用方法该变量无值。即final属性必须在放入堆中时有值。

final在修饰形参时只有在调用此形参时,才会将形参放入栈中赋值即赋实参。一般static final表示全局静态常量。

3.abstract

3.1抽象的基本概念

抽象即父类无需造出对象,只需子类造对象即可。

3.2抽象类的结构

①抽象类的构造器

子类可以用,因为子类需要拿其来实例化

②抽象类的方法

抽象类的方法只需声明,不需有方法体
public abstract void eat();

3.2抽象类和抽象方法的关系

①包含抽象方法的一定是抽象类,而抽象类中也可以有非抽象方法
②抽象类不可以创建实例(可以多态),抽象方法不可以被调用只有当重写后才可以调用

3.3子类继承后

子类继承抽象类后必须重写抽象类中的抽象方法,否则子类也是抽象类

三、interface/implements接口

1接口的简介

可以通过接口来解决多重继承的问题。且接口解决 能不能,继承解决 是不是 的问题。接口的地位同类。

2.JDK8以前接口

2.1接口的定义

接口只能定义全局常量和抽象方法

2.2 接口的规定

①接口中无构造器意味着接口无实例化(可以多态)

interface Flyable{public static final int max = 7900;public abstract void fly();}
正常void fly可以忽略前面的public abstract,即默认为public abstract

②接口结构的意义

接口的属性定义为 public static final 即表明该接口的属性随着接口加载而加载,无法更改,即全局静态常量

接口的方法定义为public abstract即表明该接口的方法是抽象方法,需要在实现类中重写

③接口的规定

class plane implement Flaybale{}即java利用implement来用类去实现接口

java类中可以实现多个接口,用逗号连接即可

类和类—继承 类和接口—实现 接口和接口—多继承

接口的使用可以体现多态性,即传入的可以是实现类的对象,但是引用可以是接口类型

④接口和类的重合

实现接口和类中出现了两个相同的方法,若重写即调用重写后的,若为重写即需要super.调用父类的,接口.调用接口的

3.JDk8以后的接口

3.1新规定

可以定义静态方法和默认方法

静态方法可以直接用,而默认方法需要实例来调用。其中静态方法只能通过接口来调用,而实现类可以调用默认方法,若实现类重写默认方法,则调用重写以后的

3.2类 接口的重合

如果子类继承的父类和实现类中使用了同名同参的方法,子类未重写优先调用父类的方法

如果实现类实现了多个接口,而多个接口定义了同名同参的默认方法,则未重写时编译报错

若重写后还想调用接口的方法 使用接口名.super.method()

四、import和package

1.package

1.1使用package声明类或接口所属的包

1.2同一个包下不能定义同名的类和接口。

1.3包的命名规则:全小写。类的命名规则:全大写。参数以及方法的命名规则:小写加大写。

2.import

2.1导入java提供的类或者其他包中的类和接口

2.2public可以被其他包导入,缺省不能被导入

2.3需要使用两个包的同名类,一个导入,一个包名加类名(即一个.一级)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值