面向对象
类与对象的创建
类是模板(属性和方法的集合),对象是具体实例
使用new关键字创建对象
构造器(构造函数[方法])
构造函数是创建对象是必须调用的,且具有两个特点:
- 必须和类名相同
- 必须没有返回类型,也不能使用void
- 一旦定义有参构造(重载),无参构造必须存在
- this.代表当前类
创建对象内存分析
1、堆 存放new的对象和数组,可以被所有的线程共享,不会存放别的对象引用
2、栈 存放基本变量类型(包含这个基本类型的具体数据),引用对象的变量(会存放这个引用在堆里面的具体地址) 先进后出
3、方法区 可以被所有线程共享,包含了所有的class和static变量
对象是通过引用来操作的:栈-->堆
封装详解
禁止直接访问一个对象中的数据,通过操作接口来访问。
访问权限:
-
public
-
private
-
default(默认)
-
protected
创建get set公共方法提供一些可以操作私有属性的方法
//alt+insert快捷键自动生成getset方法
继承介绍
继承的本质对类的扩展后构建新的类
-
JAVA中类只有单继承,没有多继承
-
使用关键字extends来表示
-
private无法继承
-
所有类默认继承Object类
-
super 指父类创建对象,this指当前对象,super调用父类的构造方法,必须在构造方法的第一个
import camp.Person; import camp.Student; public class Application { public static void main(String[] args) { Student student = new Student(); student.Test("lib"); } } // package camp; public class Student extends Person{ private String name = "camp"; public void Test(String name) { System.out.println("name = " + name); System.out.println("this.name = " + this.name); System.out.println("super.name = " + super.name); } } // package camp; public class Person { protected String name = "标识"; }
方法重写
静态方法:方法的调用只和左边定义的数据类型有关
重写:需要有继承关系,子类重写父类的方法
1、方法名必须相同
2、参数列表必须相同
3、修饰符范围可扩大不可缩小
4、抛出的异常:范围,可缩小不能扩大
多态
多态:同一方法根据发送对象的不同而采用多种不同的行为方式
一个对象的实际类型是确定的,但可以指向的引用类型就不确定了:父类的引用指向子类
子类重写了父类的方法,执行子类的方法
方法才有多态,属性是不存在多态的。
无法重写的三种情况:
1、static 属于类,不属于属性 2、final 常量 3、private 方法
instanceof和类型转换
static关键字详解
静态导入包
抽象类
abstract修饰符可以用在修饰方法也可以修饰类
抽象类中可以没有抽象方法,但有抽象方法的类一定声明为抽象类。
抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。
抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的。
子类继承抽象类,那么就必须实现抽象类没有实现的抽象方法,否则该子类也要声明也抽象类。
声明不干事,挖坑给子类
java没有多继承,但接口可以“多继承”
接口的定义与实现
类:只有实现
抽象类:具体实现和规范都有
接口:只有规范!约束和实现分离
接口的关键字为interface
public interface
实现类类名后缀加Impl
implement
N种内部类
1.成员内部类
2.静态内部类
3.局部内部类
方法内创建类
4.匿名内部类
捕获与抛出异常
异常处理五个关键字:
try、catch、finally、throw、throws
try监控区,catch捕获异常,finally最后必定执行语句
快捷键 ctrl+alt+T
throw 创建异常告警,throws甩锅
浙公网安备 33010602011771号