三 面向对象 (一)

91 阅读2分钟

一 方法

1.1 类方法


Class.run();

类中 static 方法 里面调其它的static 方法 。
直接写函数名
普通方法 ,调类中的普通方法 ,可以省 this

1.2 普通方法

Stu s1 = new Stu();
s1.study();

//注意,写有了参构造,一定要同时写无参构造 。。

idea很酷的操作。

alt + insert

封装的意义 。

  1. 提高程序安全性,保护数据。
  2. 隐藏实现细节
  3. 统一接口。
  4. 系统可维护增加了。

二 继承 is-a

2.1 super 的使用。

调父的构造 。

package com.company;

public class Stu extends Person {


    private String name = "xxx";

    public Stu() {
        super();  //仅限这里用。
    }
}

调父的方法

super.func();

2.2 重写。

静态方法 ,仅和左边有关。

普通方法重写

定义父子类

package com.company;

public class B {

    public void test(){
        System.out.println("B=>test();");
    }
}
package com.company;

public class A extends B {

    @Override
    public void test() {
        System.out.println("A=>test();");
    }
}

父子方法调用

package com.company;

public class Main {

    public static void main(String[] args) {
        A a = new A();
        B b  = new A();

        a.test();
        b.test();

   // write your code here
    }
}

运行结果
image.png

一些绕的东西

Stu s1 = new Stu();
Person = s2 new Stu();

//s2 仅能调用Person的方法 。  (如果 override 则用Stu 的) 



三 多态

同一方法,根据发送对象的不同,而采用不同的行为方式 。 一个对象,其类型的确定的,但可以指向不同的引用 。

    1 多态是方法的多态,
    2 父类和子类有联系。
    3 存在条件 ,继承关系 ,方法需要重写。父类引用子类。

instanceof 编辑通过。

四 其它

转换 子转类,会丢方法。 父可以转子

Stu stu = (Stu) person();
/*
1. 父类引用指向子类的对象。
2. 把子类转换为父类,向上转型 (会被切)
3. 父转子,强转。
*/

五匿名代码块

//普通 { //每次都跑 }

static { //仅首次 }

接口。

  1. 约束
  2. 定义一些方法 ,不同人的实现
  3. 可以实现多个接口。(必须全部实现 )