javaDay12

面向对象
1.Final
1.1是什么
final是个修饰符
,表示最终的,不可更改的

1.2能做什么
final修饰的类不能被继承
final修饰的成员方法,不能被覆写
final修饰的变量 不能二次赋值,没有默认值,必须显示赋值
一般我们把final的静态变量叫做常量,也就是 public static final 数据类型 变量名 = 值;

1.3怎么用

//final 修饰的类不能被继承
final class A{
}
class B extend A{
}
//final修饰的成员方法 不能覆写
class A{
 public final void m1() {
 }
}
class B extends A{
@Override
public void m1(){
}
}

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
1.4修饰引用类型(没理解)
在这里插入图片描述
2多态
2.1是什么
父类引用指向子类对象
父类引用:指的是用父类型声明的引用类型变量
指向:通过内存地址可以找到哪个对象
子类对象:new 子类 创建的堆内存对象
子类 变量 = new 子类();
Cat c = new Cat();

2.2相关知识
1软件设计职责原则:功能单一,只拥抱一种变化
2里氏替换原则:能使用父类的情况下,一定可以使用子类
因为继承,父类的功能,子类都有
3.依赖倒置原则:细节应该依赖抽象,而抽象不应该依赖细节
4.接口隔离原则:先不管
5.迪米特法则:最少知识原则,和其他类或对象,尽可能有更少的了解
6开闭原则:对修改关闭,对扩展开放
2.3优点
同一操作,作用于不同对象,可以有不同的介绍,产生不同 的结果,这就是多态性
当一件事会有多种不同实现方式的时候,我们选择依赖高层,来拥抱多种变化
本质还是降低和细节之间的耦合度
在这里插入图片描述
2.4缺点
丢失子类特有的属性

2.5使用语法

public static void mian(String[]args){
Cat c = new Cat();
//多态
Animal a = new Cat();
a.eat();
a = new Dog();
a.eat();
}

多态的缺点:丢失子类特有的属性
多态进行属性调用:
1.如果父类没有,直接报错,不管子类有没有
2.如果父类有,子类没有,直接执行父类
3.父类和子类都有,成员方法执行子类,因为成员方法可以覆写,其他的都执行父类
多态又叫做向上转型
在这里插入图片描述在这里插入图片描述在这里插入图片描述
类型转换异常
在这里插入图片描述2.6多态的几种形式
在这里插入图片描述

2.7Instanceof

在这里插入图片描述
3.abstract
3.1是什么
abstract:修饰符,修饰的类,是抽象类,修饰的方法是抽象方法
抽象类,不能实例化对象
抽象方法,没有方法体,只定义功能,没有功能的实现,并且抽象方法必须在抽象类中
反之,抽象类中,可以没有抽象方法
3.2使用语法

abstract class Animal{
/*
*动物吃饭的功能
*/
public abstract void eat();
public void m1(){
}
}

class Cat extends Animal {
//实现
@Override
public void eat(){
}
}

4.Interface
4.1是什么
接口可以理解为完全抽象的一个类,里面只有抽象方法和常量
*

  • 但是从1.8开始,允许出现 静态方法和默认方法
  • 语法 修饰符 interface 接口名{}
  • 接口中的抽象方法,不需要加abstract修饰 , 方法 默认都是 public abstract
  • 接口中,没有变量,只有常量,并且 public static final 可以省略
  • 类和接口之间,不再是继承关系,变成了实现关系,由extends 换成了 implements
  • 接口名 变量 = new 子实现类() 也是会发生多态的
  • 一个类 只能继承一个类,但是 可以实现 N个接口,以逗号隔开,可以解决单继承功能变弱问题
  •  	class 类名 implements 接口1 , 接口2,接口3....{}
    
  • 接口和接口之间,是多继承, 多个 已逗号隔开
  •  	interface 接口名 extends 父接口名1,父接口名2,...{}
    
  • 一个类 如果实现了一个接口,那么必须实现接口中所有的抽象方法,.否则该类需要加abstract修饰
  • 一个抽象类,实现一个接口,可以实现 0~N个抽象方法
  • 1.7 只能有抽象方法
  • 1.8 可以有静态方法,也可以有default方法(就理解为成员方法即可)
  •  	静态方法,用接口名调用即可
    
  •  	default 方法需要同过子实现类调用,同时也可以覆写
    
  • 1.9 开始 支持 private方法
    4.2使用方式
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    5.Object
    5.1概述
    在这里插入图片描述
    在这里插入图片描述
    5.2Equals
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

5.3Finalize
在这里插入图片描述

在这里插入图片描述

5.4toString
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值