封装,继承和多态

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 方法;
        • 1
          2
          3
          4
          5
          public class Person {
              public void run(){
                  System.out.println("run");
              }
          }

            

          1
          2
          3
          4
          5
          6
          7
          8
          9
          public class Student extends Person {
              @Override
              public void run() {
                  System.out.println("Son run");
              }
              public void eat(){
                  System.out.println("eat");
              }
          }

            

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          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 @   壹贰叁肆伍陆  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示