day04_JavaSE

Final 

1 是什么

是修饰符,表示最终的,不可更改的

2 能做什么

修饰的类不能被继承

修饰的成员方法不能被覆写

修饰的变量不能二次赋值 没有默认值 必须显式赋值

一般我们把final修饰的静态变量叫做常量,也就是public static final 数据类型 

变量名 = 值

常量名 建议全部大写

3 怎么用

final 要写在void前面

多态

1 是什么

 父类引用指向子类对象

父类引用:用父类型声明的引用类型变量

指向: 用过内存地址可以找到那个对象

子类对象 new 子类 创建的堆内存对象

父类类型 变量名 = new 子类();

Animal a = new Cat();

子类 变量 = new 子类();

Cat c = new Cat();

相关知识

软件设计六大原则

1 单一职责原则  功能单一 只用到一种变化

2 里氏替换原则 能使用父类的情况下,一定可以使用子类 因为继承 父类有的功能 子类都有

3 依赖倒置原则 细节应该依赖抽象,而抽象不应该依赖细节

4 接口隔离原则 

5 迪米特法则 最少知识原则 和其它类和对象 尽可能有更少的了解

6 开闭原则 扩展开放 修改关闭

2 缺点

丢失子类特有的属性

3 优点

1 同一操作,作用于不同对象,可以有不同的解释,产生不同的结果,这就是多态性

2 当一件事 会有多种不同实现方式的时候,我们选择依赖高层,来拥抱多种变化

3 本质还是降低类和细节之间的耦合度

4 多态又叫向上转型

5 属性调用

1 如果父类没有,直接报错,不管子类有没有

2 如果父类有,子类没有,直接执行父类

3 父类和子类都有,成员方法执行子类,因为成员方法可以覆写,其他全部执行父类

6 instanceof

1 判断某个对象是否由某个类实例化而来

2 如果是 在向下转型 否则就不转

7 几种形式

1 直接多态

2 参数(形参和实参) 方法参数列表为父类类型,调用方法传入子类对象

3 返回值多态 返回值类型是父类类型,但是返回子类对象

8 abstract

1 修饰符,修饰的类,是抽象类,修饰的方法是抽象方法

2 抽象类,不能实例化对象

3 抽象方法,没有方法体,只定义 功能,没有功能的实现,并且抽象方法必须在抽象类中

4 反之,抽象类中国,可以没有抽象方法

5 abstract不能和final同时出现

9 Interface(接口)

1 是什么

可以理解成一个特殊的抽象

可以理解为完全抽象的一个类,里面只有抽象方法和常量

从1.8开始,允许弧线 静态方法和默认方法

2 语法

1 修饰符 interface 接口名{}

2 接口中的抽象方法,不需要加abstract修饰,方法 默认都是 public abstract

3 接口中,没有变量,只有常量,并且public static final可以省略

4 类和接口之间,不再是继承关系,变成了实现关系,由extends 换成了 implements

5 接口名 变量 = new 子实现类() 也是会发生多态的

3 优点

1 可以发生多态

2 一个类 只能继承一个类,但是 可以实现 N个接口,可以解决单继承功能变弱问题

class 类名 implement 接口1,接口2,接口3...{}

3 接口和接口之间,是多继承,多个 已逗号隔开

interface 接口名 extends 父接口名,父接口名2,...{}

4 一个类 如果实现了一个接口,那么必须实现接口中所有的抽象方法.否则该类需要加abstract修饰

5 一个抽象类,实现一个接口,可以实现0~n个抽象方法

6 1.7只能由抽象方法

   1.8可以有静态方法,也可以有default方法(就理解为成员方法即可) 静态方法,用接口名调用即可

   default 方法需要通过子实现类调用,同时也可以覆写

   1.9 开始支持private方法

7 如果接口和后相类都能做到一件事,优先使用接口,因为这样会保留类的继承

Object

1 是所有类的祖类,是java中提供的根类

   一个类没有显示继承 另一个类的时候,默认继承object

   object xx = new xxx();

   是可以发生多态的

2 equals

该方法设计目的,用来比较两个对象是否相等,但是 默认比较地址

==; 比较基本类型的时候,比较值的大小,但是比较引用类型的时候,比较的是 内存地址

而比较内存地址,是没有任何价值的,我们一般会比较两个对象的属性值,是否一致,而不是比较两个对象的地址是否一致

java中默认比较内存地址(==) 需要我们根据需求进行重写

3 Finalize

该方法会在垃圾被回收的时候自动调用,无需程序员手动调用

垃圾   当一个对象,没有更多引用指向它的时候,该对象被视为垃圾数据(就是创建了一个对象,谁也找不到他)

System.gc();

没有回收功能,手动调用的话,只是单纯的方法调用而已

4 toString

代表了当前对象的字符串表示形式

当我们打印一个引用类型变量的时候,会自动调用该对象的toString方法

而Object中默认的toString方法 是打印该对象的内存地址(hash值)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值