java 08_java08

一: 权限修饰符

权限修饰符

* 本类 同包类 不同包子类 不同包其他类

* 私有的 private √

* 默认的 default √ √

* 受保护的 protected √ √ √

* 公共的 public √ √ √ √

*

* 注意:

* 以上四个权限修饰符都是成员修饰符(成员变量,成员方法),不能修饰局部

* 被private修饰的内容不能被继承

* public和default(不能显示定义)能够修饰类

*

* 设计面向对象的原则之一: 开闭原则(对修改关闭,对扩展开放)

二: 重写

重载 : -->方法

* 1.同一个类中

* 2.多个方法的方法名相同

* 3.方法签名不同

* 重写 : -->方法

* 1.不同的类

* 2.继承

* 3.方法签名相同

* 重写和重载的区别:

*

* 子类中一旦方法重写,会对父类中同名的进行屏蔽

* 如果子类有重写父类中的方法,调用时会调用子类中重写的方法

*

* 检测重写方法的方式:

* 1.左边有向上的三角

* 2.在重写方法的上面添加一个注解 @Override

*

* 重写满足|注意的条件:

* == 方法签名相同

* <= 返回值类型:基本数据类型:子父类必须相同 引用数据类型:子类<=父类

* >= 权限修饰符:子类>=父类

*

* 注意:

* 1.被private修饰的方法不能被重写

* 2.被final修饰的方法不能被重写

* 3.被static修饰的方法不能被重写

* 如果子类中存在于父类静态方法重名的方法,记住要把子类中这个方法定义为静态的

三: super关键字

super:指代父类对象

this: 指代当前创建对象

*

* 1) 用在构造器的首行可以掉用父类中的构造器

* super(参数)-->匹配父类中构造器的参数

* 如果没有显示定义,默认在子类构造器的首行存在super(),默认调用父类的空构造

* 2) 区分子父类同名问题

* 如果存在同名问题,默认隐藏this,默认就近原则找当前子类中的,如果想要指定父类中,要使用super调用

* 注意:

* 先父类后子类

* 不能显示同时定义this()和super(),因为都要存在于构造器的首行,但是可以隐式同时使用,默认调用父类空构造,显示调用子类其他构造器

* 就近找局部,然后如果同时存在局部,子类成员,父类成员同名问题,默认找局部,子类成员this,父类成员super

*

* final 最终的

* 被final修饰的变量为常量,不能改变

* 被final修饰的方法,不能被重写

* 被final修饰的类不能被继承(太监类)

* 思考: 被final修饰的一个对象的引用,是否能够修改对象中的属性值?

* final Person p=new Person();

* p.name="张三";

可以,地址不可改变,对象中的属性可以改变.

四: Object

Object 所有类的父类(老祖宗类)

* 在java中的所有类都会直接或者间接的继承自Object

*

* toString: 打印一个对象的引用,默认调用这个对象的toString()方法

* 目的: 打印对象的信息的字符串表示形式

* 类中重写toString方法,自定义方法体的实现

*

* ==比较地址

* equals : 可以比较对象的内容是否相同

* public boolean equals(Object obj) {

return (this == obj);

}

equals在Object中默认比较的还是对象的地址

五:多态

多态 面向对象三大特性之一

* 一种事物多种形态|多种表现形式

*

* 多态的前提:

* 类的继承 | 接口的实现

* 多态的最终体现:

* 父类的引用指向子类的对象

* 多态的目的:

* 父类的引用在调用子父类中同名方法的时候,会调用子类中重写的方法

* 注意:子类中新增的方法对父类不可见

多态使用成员

* 成员变量:

* 编译运行找父类

* 编译运行看左边

*

* 成员方法:

* 编译看父类,运行看子类

* 编译看左边,运行找右边

* 编译看类型,运行找对象

转型:

* 孔子装爹

* 孔子{name=孔子;age=18; void teach(){讲论语...} void play(){打王者}}

* 孔子{name=孔子爹;age=30; void teach(){做生意...}}

* 有一个人来找孔子爹讲做生意上课,但是孔子爹去旅行

* 办法: 孔子化妆装成他爹的样子去上课 --向上转型

* KongZiDie k=new KongZi();

* 因为真实去的是孔子,所以teach讲课讲的内容是论语

* 因为孔子和同学们关系很好,索引相约一起打王者

* 卸妆-->变成孔子的样子,因为孔子会打王者

* 大范围类型 :父类 小范围类型: 子类

* KongZi z=(KongZi)k; --向下转型

* z.play();

*

* 如果先要调用子类中新增的方法,需要向下转型

*

* ClassCastException 类型转换异常

* instanceof 运算符

* A引用 instanceof B

* 判断A的引用是否为B类类型的对象,或者B类子类的对象,如果是返回true,否则返回false

*

* 面向对象:

* 思想

* 封装:对外隐藏内部的实现细节,提供公共的访问方式

* 继承:子类继承父类,就可以拥有父类中的成员

* 多态:在继承的前提下和方法重写的前提下,可以提高代码的服用型和扩展性

六:抽象类

* 抽象类: 使用abstract修饰的类叫做抽象类

* 抽象方法:使用abstract的关键字修饰的方法

* 抽象方法没有方法体的方法

* 抽象方法必须存在于抽象类中

*

* java工程师: 行为:工作

* 前端工程师: 行为:工作

* 定义个父类 develop开发部类 -->行为:工作

*

* 注意:

* 1.抽象类不是实例化 (创建对象)

* 2.抽象方法必须被重写(子父类继承)

* 3.如何使用抽象类中的内容:---创建具体子类的对象去使用

* 具体的子类:重写父类中所有的抽象方法+按需新增方法

* 抽象的子类:按需重写父类中的抽象方法+按需新增-->抽象类,如果想要使用最终需要具体子类

* 4.抽象类中可以存在抽象方法,可以存在具体方法

* 5.abstract不能和private,final,static,native一起使用

* 6.抽象方法只需要被重写一次,也可以按需重写多次

*

* 接口:接口特殊的抽象类

* 类要继承 -->只能单继承

* 接口要实现 :吸烟 :游泳 --->多实现

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值