• java基础day14---static关键字-----继承


    day14
    1.为什么使用static关键字修饰属性

    /*
    编写学生类,属性:名字,现住址(北京)
    */
    class Student{
    //构造方法
        public Student(){
        
        }
        public Student(String name){
            this.name=name;
        }
        //属性
        String name;
        String address="北京";
    }
    //编写学生测试类
    class StudentTest{
        public static void main(String[] args){
        //创建对象
        Student s=new Student();
        Student s2=new Student("张三");
    
        System.out.println(Student.address);//北京
        Student s=new Student();
        System.out.println(s.name);//null
        System.out.println(s.address);//北京
    
        s=null;//变为空值,对象变为垃圾
        //System.out.println(s.name);//出现运行错误,不能访问对象中的实例变量
        System.out.println(s.address);
    
        }
    }


    //发现问题:
    ---多个对象中有相同值得属性,如:address="北京";
    -----能否将相值得属性,在内存中只开辟一块空间,
        并且所有对象都可以访问?---能
    解决办法:
    --将相同值得属性,存放在一个共享区(方法区)中,此时
        多个对象都可以访问。
        堆--栈---共享区---堆--栈
    ---好处:节省空间
    ---static String address="北京";///称为静态属性也叫做类的变量
    ---在方法区(共享区)中存储,并且所有对象都可以访问
    ---与类同生死,也就是说类在static修饰的属性就存在
    ---可以使用类名.属性名称;也可以使用引用名称.属性名称
    ---注意:当引用名称的值为null时,也可以访问静态属性,
        不会出现空指针异常
    ---类优先于对象,也就是说类的生命周期比较长

    2.static关键字修饰符方法
    ---称为静态方法也叫做类的方法
    ---与类同生死,也就是说类在static修饰的属性就存在
    ---可以使用类名。方法名称([参数列表]);
        也可以使用引用名称.方法名称([参数列表]);

     

    class Student{
        //称为静态方法也叫做类的方法
        public static void print(){
            System.out.println("执行了println方法");
            //System.out.println(name);//静态方法中只能访问静态属性,静态方法
        }
        //称为非静态方法也叫做实例方法
        public void show(){
            System.out.println("执行了show方法");
        }
    
    
        public Student(){
        
        }
        public Student(String name){
            this.name=name;
        }
        //属性
        String name;
        String address="北京";
     }
    
     //编写学生测试类
    class StudentTest{
        public static void main(String[] args){
        Student.print();
        Student s=new Student();
        System.out.println(s.name);;//null
        s.show();
        s.print();
        
    
        }
    }



    3.static修饰代码块
    --- 主要完成对静态属性赋值
    ---静态代码块在类第一次被载入时则执行

    class Student{
        //静态属性代码块:完成对静态属性赋值
        static{
            address="北京市";
            System.out.println("执行了静态代码块");
        }
    }



    4.为什么使用继承
    /*
    编写狗类:属性--名字、年龄、品种、颜色;方法:显示信息
    编写猫类:属性--名字、颜色、性别、年龄;方法:显示信息
    编写测试类:创建猫和狗的对象,并分别显示信息

    分析得到:
        如果多个类中有相同的属性和方法,能否单独编写一个类?----能
    解决办法:
        --将多个类中相同的属性和方法编写在单独一个类中,该类称为父类
        --在子类继承父类,然后在子类中编写独有的属性和方法

        动物类:
            属性:名字、年龄、颜色
            方法:显示信息
        狗类 继承 动物类
            独有属性:品种              
        猫类 继承 动物类
            独有属性:性别

    好处;减少代码的冗余性(重复性)
    */
    5.编写继承代码步骤
    ---第一步:编写父类
        [修饰符] class 类名{
            //属性和方法
        }
    ---第二步:编写子类
        [修饰符] class 子类类名 extends 父类类名{
        //编写独有属性和方法
        }

    ---注意:当一个类没有指明继承具体哪个父类时,
    则默认继承object类
        object类是所有类的父类(超类)


    6.继承中注意事项
    --子类继承父类,但是不能继承父类的构造方法
    --父类也叫做超类(基类),子类也叫做派生类
    --继承具有两大特性:
        **一个类只能继承一个直接的父类,也就是类的单根性
        **类具有传递性


    class Animal{
        //属性
        String name;
        int age;
        String color;
        //方法:显示信息
        public void show(){
            System.out.println("名字:"+name+"
    年龄:"+age+"
    颜色:"+color);
        }
    }
    //编写狗的子类继承动物父类
    class Dog extends Animal{
        //编写子类中独有属性和方法
        String strain;
    
    }
    //等价于
    /*class Dog extends object{
    
    }*/
    
    class Cat extends Animal{
        //独有属性:性别
        char sex;
    }





  • 相关阅读:
    SQLyog远程连接Linux服务器错误2003解决
    Linux/UNIX系统编程手册 练习3.8
    概括
    Linux 命令
    句柄类
    带有C风格的 CLib库
    Linux 命令
    C++ 编程思想 第三章 3-2
    一.创建型模式 Prototype 模式
    一.创建型模式 Builder
  • 原文地址:https://www.cnblogs.com/fdxjava/p/10659497.html
Copyright © 2020-2023  润新知