面向对象
方法调用
静/动态方法的调用
//Student方法
public class Student {
//非静态方法
public void say(){
System.out.println("学生");
}
//静态方法
public static void Write(){
System.out.println("学生2");
}
}
//静态方法的调用,直接调用
Student.Write();
//非静态方法的调用需要实例化
Student student = new Student();
student.say();
static
随着main方法一起加载,而非静态的方法要实例化以后才存在。
实参和形参
实际参数和形式参数的类型要对应!
构造器详解
一个即使什么都不写,它都会存在一个方法
构造器特点:和类名相同,没有返回结果
作用:使用
new
关键字,本质上是在调用构造器,用来初始化值
-
使用
new
关键字,本质上是在调用构造器,用来初始化值(无参)public Person(){ }
-
有参构造,一旦定义了有参构造,无参就必须显示定义
public Person(String name){ this.name = name; }
快捷键
Alt+Insert
快捷打开构造器
小结类与对象
-
类与对象
类是一个模板(抽象),对象是一个具体的实例 -
方法
定义,调用 -
对应的引用
引用类型:基本类型(8)
对象是通过引用来操作的,栈—>堆 -
属性:字段Field,成员变量
默认初始化
数字:0
char:u0000
boolean:false
引用:null
修饰符 属性类型 属性名 = 属性值 -
对象的创建和使用
- 必须使用new 关键字创建对象,构造器
Person xiaoming = new Person();
- 对象的属性
xiaoming.name
- 对象的方法
xiaoming.sleep()
- 必须使用new 关键字创建对象,构造器
-
类
静态的属性:属性动态的行为:方法
封装
作用
- 提高程序的安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 增加系统的可维护性
继承
super
super
调用父类的构造方法,必须在构造方法的第一个。super
必须只能出现在子类的方法或者构造方法中!super
和this
不能同时调用构造方法
区别
代表的对象不同:
this
:本身调用者这个对象
super
:代表父类对象的应用
前提
this
:没有继承也可以使用
super
:只有继承条件才可以使用
构造方法
this()
:本类的构造
super()
:父类的构造
重写
需要有继承关系,子类重写父类的方法
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大,但是不能缩小:
public>Protected>Default>private
- 抛出异常范围可以缩小,但是不能扩大:
ClassNotFoundException--->Exception
重写,子类的方法与父类必须一致,方法体不同
重写的原因:父类的功能,子类不一定需要,或者不一定满足!
Alt+Insert
:override
多态注意事项
- 多态是方法的多态,属性没有多态
- 父类和子类有联系,类型转换异常,
ClassCastException
- 存在条件:继承关系,方法需要重写,父类引用指向子类对象,
Father f1 = new Son()
不能重写的
static
方法,属于类,不属于实例;final
常量;private
方法
static
方法与类一起加载且只在第一次加载一次
抽象类
- 不能
new
这个抽象类,只能靠它的子类去实现它 - 抽象类中可以写普通方法
- 抽象方法只能在抽象类中
接口的作用
1、Java的接口用于约束、规范
2、定义不同的抽象方法工不同的人实现
3、public abstract
4、public static final
5、接口不能被实例化,接口中没有构造方法
6、implements可以实现
7、使用接口必须重写接口里面的方法