封装,继承和多态

1.封装:

属性私有,get/set 

记住快捷键alt+insert

2,继承

 extends

继承是类和类之间的关系,除此之外,类和类之间的关系还有依赖,组合,聚合等

继承关系的两个类,子类(派生类)---父类(基类)

 

快捷键:IDEA中父类窗口上ctrl+H,可以打开继承树

object类

JAVA中,所有的类都默认继承object类

 

 

JAVA中只有单继承,没有多继承,一个爸爸可以生多个儿子,一个儿子没有几个爸爸。

构造方法

this():本类的构造

super():父类的构造 

 

重写 :Alt+insert 选中override

  • 1.方法名必须相同
  • 2.参数列表必须相同
  • 3.修饰符:范围可以扩大,但不能缩小:public>protected>default>private
  • 4.抛出的异常:范围可以被缩小,但不能扩大 ClassNotFoundException->Exception (大)

静态方法:方法的调用只和左边定义的数据类型有关

非静态方法:重写的方法关键词只能是public

3. 多态

  • 动态编译:类型:可扩展性更强
  • 即同一个方法可以根据发送对象的不同二采用多种不同的行为方式。
  • 一个对象的实际类型是确定的,但可以指向对象引用的类型有很多
  • 多态存在的条件
    • 有继承关系
    • 子类重写父类的方法
    • 父类引用指向子类的对象,子类的引用不能指向父类的对象
  • 注意:多态是方法的多态,属性没有多态。
  • 不能被重写的方法
    • static 方法,属于类,不属于实例
    • final 常量
    • private 方法;
        • public class Person {
              public void run(){
                  System.out.println("run");
              }
          }
          

            

          public class Student extends Person {
              @Override
              public void run() {
                  System.out.println("Son run");
              }
              public void eat(){
                  System.out.println("eat");
              }
          }
          

            

          public class Application {
              //多态测试
          
              public static void main(String[] args) {
                  //一个对象的实际类型是确定的
                  //new Student();
                 // new Person();
          
                  //可以指向的引用类型不确定了
                  Student s1=new Student();
                  Person s2=new Student();    //父类的引用指向子类的类型
                  Object s3=new Student();
          
          //对象能执行哪些方法,主要看对象左边的类型,和右边关系不大
                  s2.run();
                  s1.run();
                  s1.eat();
              }
          }
          

            

把父类转化为子类,向下转化,强制转换

抽象:封装、继承、多态

posted @ 2023-01-08 15:21  壹贰叁肆伍陆  阅读(60)  评论(0)    收藏  举报