面向对象(下)

发布于:2023-01-18 ⋅ 阅读:(420) ⋅ 点赞:(0)

多态

  • 即同一方法可以根据发送对象的不同而采用不同的行为方式(多态的意义)

  • 一个对象的实际类型是确定的,但可以指向对象的引用可以有很多(一般指父类,有关系的类)

  • - 有继承关系

  • - 子类重写父类方法

  • - 父类引用指向子类对象

  • 1、static 方法属于类,它不属于实例
    2、final常量
    3、private方法;

  • 类型转换
    1、父类引用指向子类的对象
    2、把子类转换为父类,向上转型,会丢失自己原来的一些方法
    3、把父类转换为子类,向下转型,强制转换,才调用子类方法
    4、方便方法的调用(转型),减少重复的代码,简洁。

    抽象:
    封装、继承、多态
    抽象类、接口

    static
    静态变量可以直接用类名访问,也称类变量。
    静态变量(或方法)对于类,所有对象(实例)所共享。
     

    
    public class Student{
        private static int age;//静态的变量
        private double score;//非静态的变量
     
        public void run2(){
     
        }
        public static void sing(){
     
        }
     
        public static void main(String[] args) {
            Student s1 = new Student();
            System.out.println(Student.age);
            System.out.println(s1.age);
            System.out.println(s1.score);
            sing();
        }
     
    }
    

  • 静态区代码 加载类时一起被初始化,最早执行且只执行一次(第一次new)。
    package kuangshen.demo04;
     
    public class Person {
        //2、赋初始值
        {
            //代码块(匿名代码块)
            System.out.println("匿名代码块");
        }
        //1、
        static {
            //静态代码块,类加载直接执行,永久执行一次
            System.out.println("静态代码块");
        }
        //3、
        public Person() {
            System.out.println("构造方法");
        }
     
        public static void main(String[] args) {
            Person person1 = new Person();
            System.out.println("================");
            Person person2 = new Person();
     
        }
    }
    

    抽象类(abstract)
    abstract修饰的类就是抽象类,修饰的方法就是抽象方法。
    抽象类中可以没有抽象方法,但有抽象方法的类一定要声明为抽象类。
    抽象类不能使用new来创建对象,它是用来让子类继承的。
    抽象方法只有方法的声明,没有实现,让其子类实现。
    子类继承抽象类,必须实现抽象类的所有方法,否则该子类也要声明为抽象类。
     

    //abstract 抽象类:类 extends: 单继承(接口可以多继承)
    public abstract class Action {
        //约束~有人帮我们实现~
        //abstract,抽象方法,只有方法名字,没有方法的实现!
        public abstract void doSomething();
    }
    
    //抽象类的所有方法,继承了它的子类,都必须要实现它的方法
     
    public class A extends Action{
        @Override
        public void doSomething() {
     
        }
    }


网站公告

今日签到

点亮在社区的每一天
去签到