面向对象: 以类的方式组织代码,以对象的组织(封装)数据
类和对象
类是抽象的 需要实例化
类实例化后会返回一个自己的对象
构造方法
一个类即使什么都不写,它也会存在一个方法,即构造方法
public class Man{
public Man(){}
}
构造方法特点:
- 和类名相同
- 无返回值
作用:
- new 本质在调用构造方法
- 初始化对象值
注意:
- 定义有参构造后,如果想使用无参构造,需要显示的定义一个无参构造
public Man(){
}
public Man(String name){
this.name = name;
}
- 即使什么都不写,也会默认存在一个空的无参构造
封装
作用:
1.提高程序的安全性,保护数据
2.隐藏代码的实现细节
3.统一接口
4.系统的可维护性增加了
设置私有属性
private String name;
private int id;
当对象创建后,无法直接调用和修改这些属性,需要通过提供的一些public的get和set方法来获取和修改私有属性
student.setName("chen");
String name = student.getName();
System.out.println(name); //chen
继承
使用extends关键字
子类可以继承由protected和public修饰的方法和属性,无法继承由private修饰的私有方法和私有属性
super
public class Person {
public Person() {
System.out.println("Person无参执行了");
}
}
public class Student extends Person{
public Student() {
// 隐藏代码 调用了父类的无参构造
// super();// 调用父类的构造器 必须在子类构造器的第一行
System.out.println("Student无参执行了");
}
}
public class Application {
public static void main(String[] args) {
Student student = new Student();
}
}
输出结构为:
Person无参执行了
Student无参执行了
由此可见,当我们new一个Student的时候,它会先调用隐藏代码super()来调用父类的无参构造,接着再执行Student的构造器
super注意点:
- super调用父类的构造方法,必须在构造方法的第一行
- super必须只能出现在子类的方法或构造方法中
- super和this不能同时调用构造方法
super和this的区别:
- 代表的事物不同,this表示本身调用的这个对象,super代表父类对象的引用
- this没有继承也可以使用,super只能在继承条件下使用
- this默认调用本类的构造,super调用父类的构造
重写
前提:需要有继承关系,子类重写父类的方法
特点:
- 方法名必须相同
- 参数列表必须相同
- 修饰符 范围可以扩大但不能缩小 public>>protected>default>private
- 抛出的异常:范围可以被缩小但不能扩大 ClassNotFoundException–>Exception(大)
- 子类的方法和父类的方法必须一致,方法体不同