JavaSE03

面向对象

概念

本质:以类的方式组织代码,以对象的形式封装数据 抽象

三大特性:封装、继承、多态

一个类里只能有一个 public class,但可以有多个 class

创建与初始化对象

使用 new 关键字创建对象,除了分配内存空间,还会给创建好的对象进行默认初始化,以及对类中构造器的调用

构造器

类中的构造器也称为构造方法,具有两个特点:

  • 必须和类的名字相同
  • 必须没有返回类型,也不能写 viod
//查看 class 文件,自动生成的
package com.oop.demo02;

public class Person {
    public Person() {
    }
}
//我们也可以显式生成
String name;

//无参构造 实例化 初始值
//1.使用 new 关键字,必须要有构造器
public Person(){
    this.name = "John";
}
//2.有参构造
//一但定义了有参构造,无参构造必须显式定义!否则会被覆盖只留下有参构造
//无参构造为空即可
public Person(){
}

public Person(String name){
    this.name = name;
}

//new 的时候,如果有参数就走有参构造;没有参数则走无参构造(方法重载)

生成构造器的快捷键:alt + insert -- 选择Constructor

封装

该露的露,该藏的藏(内部数据操作细节自己完成,不允许外部干涉。仅暴露少量的方法给外部使用)

记住这句话:属性私有,get / set

封装主要用于属性,一般不用于方法

package com.oop.demo04;

//类  private:私有
public class Student {

    //属性私有
    private String name; //名字
    private int id; //学号
    private char sex; //性别

    //但是可以提供一些可以操作这个属性的方法
    //获得name属性的方法
    public String getName() {
        return name;
    }

    //设置name属性的方法
    public void setName(String name) {
        this.name = name;
    }
}
package com.oop.demo04;

public class Application {
    public static void main(String[] args) {
        Student s1 = new Student();
        //属性私有,不可获取和修改!
        //s1.name = "";

        //使用 get、set 方法操作私有属性
        s1.setName("joy");
        System.out.println(s1.getName());
    }
}

生成 get / set 方法的快捷键:alt + insert -- 选择

封装的作用:

  • 校验用户输入的值(限制用户的操作)
  • 提高程序的安全性,保护数据
  • 隐藏代码的实现细节
  • 统一接口
  • 增加系统可维护性

继承

继承的本质是一批类的抽象。继承是类和类之间的一种关系(除继承外,还有依赖、组合、聚合等)

Java 中类只有单继承,没有多继承

修饰符优先级:public > protected > default > private

查看继承顺序快捷键:ctrl + h

super

this.属性/方法
super.属性/方法  -->  父类的
//私有的 super也继承不了
//当 new 一个对象时,默认先执行要new的类的父类的构造器(隐藏代码:super()),然后再执行该类的构造器

super 注意点:

  • 代表父类对象
  • super 调用父类的构造方法,必须在构造方法的第一个
  • super 必须只能在子类 或 构造方法中
  • super 和 this 不能同时调用构造方法!
  • 只能在继承条件下才可以使用

this 注意点:

  • this 代表调用者这个对象
  • 没有继承也能使用

方法重写

由此可见 静态方法和非静态方法区别很大
静态方法:方法的调用只看左边定义的类型
非静态方法:才可以重写!public!
重写的方法左边有个小箭头!

小结:
重写的前提:继承,重写的是方法而不是属性
1.方法名必须相同
2.参数列表必须相同!
3.修饰符:范围可扩大 (public > protected > default > private)
private 的方法不可重写!
4.重写抛出的异常:范围可以缩小,但不能扩大!

为什么需要重写?
1.父类的功能,子类不一定需要或者不满足使用要求。
alt + insert :选择 override
posted @ 2021-03-09 08:09  straightup  阅读(97)  评论(0编辑  收藏  举报