Java学习_20220608

1. 构造器(alt+insert)

和类名相同,没有返回值。

new本质是在调用构造方法,初始化对象的值。

定义有参构造之后,如果想使用无参构造,显示的定义一个无参的构造。

(1)无参构造:使用new关键字,本质是在调用构造器,用来初始化值。

public Person(){
    //空构造器
}
//调用
Person per = new Person();

(2)有参构造:一旦定义了有参构造,无参就必须显示定义。

public Person(){
    //必须写
}
public Person(String name){
    this.name = name;
}
//调用
Person per = new Person(String p){
}

2. 封装(属性私有,get/set)(alt+insert)

高内聚:类的内部数据操作细节自己完成,不允许外部干涉;

低耦合:仅暴露少量的方法给外部使用。

/*
1.提高程序的安全性,保护数据
2.隐藏代码的实现细节
3.统一接口
4.系统可维护性增加了
*/
//在set访问器中可以设置属性的条件

3. 继承 extends

public class Student extends Person {
    private String name = "小Z";
    public void test(String name) {
        System.out.println(name); //调用test函数时传入的name值
        System.out.println(this.name);  //当前类Student自己的name值
        System.out.println(super.name);  //Person的name值
    }
}

 子类无参构造函数可以调用父类无参的构造函数,默认super();在构造函数方法体中第一行。

若父类中有有参构造函数,但没定义无参的构造函数,则子类无法调用父类的无参构造函数,但可以调用有参的构造函数。

public Person(String name) {
    this.name = name;
    System.out.println(name);
}
public Student() {
        super("name");
}

4. 重写(overvide):需要有继承关系,子类重写父类的方法!

public class Person {
    public void test(){
       System.out.println("person==>test()");
   }
}
public class Student extends Person {
    @Override
    public void test() {
       // super.test();  //默认调用父类的具体方法
        System.out.println("student==>test()"); //写自己的方法
    }
}

//调用过程
    Student student = new Student();
    student.test();  //student==>test()
    //父类的引用指向了子类
    Person p = new Student();
    p.test(); //student==>test()

(1)方法名必须相同

(2)参数列表必须相同   // 不同:重载

(3)修饰符:范围可以扩大   public > protected > defult >private

(4)抛出的异常:范围,可以被缩小,但不能扩大:ClassNotFoundException --> Exception(大)

重写:子类的方法和父类的方法名称必须一致,方法体不同;

为什么要重写?(alt + insert:overvide)

(1)父类的功能,子类不一定需要,或者不一定满足!

 

posted @ 2022-06-08 16:38  浑浑噩噩一只小迷七  阅读(23)  评论(0)    收藏  举报