美文网首页
2022-12-14

2022-12-14

作者: RobertLiu123 | 来源:发表于2022-12-13 17:22 被阅读0次

    一、构造器赋值内存图

    public class Dog {
        public String name;
        public int age;
        public double height;
        public void eat() {
            System.out.println("吃饭呢,好香");
        }
        public void sleep() {
            System.out.println("zzz");
        }
        public Dog() {
            
        }
        public Dog(String n,int a,double h) {
            name = n;
            age = a;
            height = h;
        }
    
    }
    
            Dog d1 = new Dog("大黄", 3, 100);
            Dog d2 = new Dog("米泡泡",4,150);
            Dog d3 = new Dog();
            System.out.println(d1.name);
            System.out.println(d2.name);
            System.out.println(d3.name);
    
    image.png
    public class Dog {
        public String name = "小贝";
        public int age = 2;
        public double height = 120;
        public void eat() {
            System.out.println("吃饭呢,好香");
        }
        public void sleep() {
            System.out.println("zzz");
        }
        public Dog() {
            
        }
        public Dog(String n,int a,double h) {
            name = n;
            age = a;
            height = h;
        }
    
    }
    
            Dog d1 = new Dog();
            Dog d2 = new Dog();
            Dog d3 = new Dog("大黄", 3, 100);
            Dog d4 = new Dog("米泡泡",4,150);
            
            System.out.println(d1.name);
            System.out.println(d2.name);
            System.out.println(d3.name);
            System.out.println(d4.name);
    
    image.png

    二、this关键字

    1、this.属性或this.方法
    方法内变量归属采取就近原则,即和形参一致,为了消除这一现象,可采取形参和属性不一致或this.属性指向当前对象的属性
    2、this()
    写到构造方法第一行(只能写第一行),调用本类的其他构造方法

    三、static

    静态,可以修饰属性、方法、代码块、内部类,“跟着类走”,当类型信息加载到方法区时,static修饰的成员就完成了初始化,因此,在测试类中,调用static修饰的成员,用类名.成员,即可完成调用,也可以用对象.成员,因为static修饰的成员在对象创建之前已完成了初始化
    非static修饰的成员,需要在创建对象后,完成初始化,因此只能通过对象.成员调用

    四、static成员与非static成员互相调用

    1、本类中
    (1)static方法调用static成员,直接变量名或方法名(值)
    (2)static方法调用非static成员,需要创建对象,然后对象.属性或对象.方法(值)
    (3)非static方法调用static成员,非static方法需要创建对象才能调用,此时static成员早已完成了初始化,因此直接属性名或方法名(值)
    (4)非static方法调用非static成员,都是被同时初始化的,因此直接属性名或方法名(值)调用
    2、其它类中
    (1)static方法调用static成员,使用类名.属性、类名.方法名(值)或者对象.属性、对象.方法名(值)调用
    (2)static方法调用非static成员,需要创建对象,然后对象.属性或对象.方法(值)
    (3)非static方法调用static成员,使用类名.属性、类名.方法名(值)或者对象.属性、对象.方法名(值)调用
    (4)非static方法调用非static成员,需要创建对象,然后对象.属性或对象.方法(值)调用

    五、为什么主方法要设计成static

    因为需要无对象首先被执行

    六、static执行的时机

    {}放到方法中,叫普通代码块,作用是在普通代码块中声明的变量,不让外界随意获取
    {}放到方法外,叫构造代码块,配合构造方法创建对象
    static{},叫静态代码块,只被加载一次,优先于其他代码块,常用于程序执行前的准备工作,比如读取配置文件
    静态代码最先被执行
    其次是构造代码块
    最后是构造方法

    七、关于共享

    类中的static资源由类和它所有的对象共享

    八、继承

    继承是类和类之间的关系
    父类(超类、基类)
    子类(派生类)

    九、继承的条件

    满足以下任意条件的即认为构成继承关系
    1、A is B A继承了B
    2、子类对象可以当作父类对象去用

    十、如何写继承

    extends

    public class B extends A{
    
    }
    

    此时,A是父类,B是子类

    十一、关于继承的说明

    1、一个类有且仅有一个直接父类,但是可以有很多间接父类,即java号称的“单继承、多实现(后续接口中会详细说)”
    2、一个类如果没有明确写出继承自谁,那就继承自java官方提供的Object(上帝类),Object是java中唯一一个没有父类的类
    Everything is Object 万物皆对象
    3、反过来,一个类可以有多个直接子类
    4、对象创建的过程(涉及继承),要创建一个类的对象,需要找出继承关系,把继承树最顶端的那个类创建出对象,然后才创建后续子类对象,原因是jvm在类的构造方法第一行加上了super();,表示调用父类的构造方法,当然也可手动指定调用父类其他的有参构造方法
    5、当父类只有有参构造方法时,子类会报错,解决的方式:
    (1)为父类添加一个无参构造方法
    (2)在子类构造方法中手动调用父类有参构造方法


    image.png

    6、super调父类构造方法的妙用

    public Car(String brand,String color,double speed,int loadPersonCount) {
            super(brand,color,speed);
            this.loadPersonCount = loadPersonCount;
        }
    
    image.png

    7、对于从父类继承过来的属性,可以使用this.或者super.指定
    而子类自己的属性,只能用this.指定
    8、子类从父类继承属性和方法,如果子类与父类属性名一致,创建子类对象取子类自己的属性值,方法也一样

    十二、重写

    @Override重写注解
    1、权限修饰符,重写后范围要不小于重写前范围
    2、返回值类型,是void和基本数据类型,重写前后必须一致
    是引用数据类型,重写前后要一致或重写后是重写前的子类
    3、方法名相同
    4、参数个数、类型、顺序一致
    5、

    练习:
    创建车的总类Vehicle,有有品牌、颜色、速度等属性,还有两个构造方法,一个无参、一个为所有属性赋值,还有个pay方法,用于支付车费
    创建三个子类,具体是:
    大卡车,继承父类属性外有载货量属性,重写pay,打印支付30元车费
    公交车,继承父类属性外有载量属性,重写pay,打印支付20元车费
    小汽车,继承父类属性外有载量属性,重写pay,打印支付10元车费
    以上三个子类军提供两个构造方法,一个无参,另一个为父类和自己属性赋值

    作业
    沈北某师范学校有100名计算机专业的毕业生,现在沈北某狼机构有三名咨询老师,这些老师随机招纳学生来学习,打印出招生的语句,并记录每名老师招生的数量,根据招生数量从高到低排序

    相关文章

      网友评论

          本文标题:2022-12-14

          本文链接:https://www.haomeiwen.com/subject/xuhhqdtx.html