• java基础day11---空指针异常----引用类型--自定义类型赋值--封装


    day11
    1.空指针异常---
    --属于运行错误-java.long.NullPointerException
    --原因:当引用名称的值为null时,就不能访问某个对象中的属性或方法
    热锅非要访问这就出现空指针异常
    --解决办法:在访问某个对象中的属性或方法之前必须保证该引用
    名称中存放的是对象的地址(引用)
    2.当一个对象中的属性是引用类型案例

    /*
    编程完成如下要求:
        班级类:
            属性:编号,名称,地址
            定义:无参构造方法,有参构造方法
            定义方法:显示班级的信息
        学生类:
            属性:学号,姓名,性别,年龄,所在班级
            定义方法:显示学生的信息(学号,姓名,性别,年龄,班级编号,班级名称)
            注意:所在班级应为班级类的类型
        测试类:
            通过有参构造方法,创建班级对象
            通过无参构造方法,创建学生类对象
            调用显示信息的方法显示学生的信息
    */
    Class Grade{
        int num;
        String name;
        String address;
         //构造方法
         public Grade(){
         }
    
         public Grade(int num,String name,String address){
            this.num=num;
            this.name=name;
            this.address=address;
         }
         //方法:显示班级的信息
         public void show(){
            System.out.println("班级编号:"+num+"
    班级名称:"+name+"
    班级地址:"+address);
         }
    }
    //编写学生类
    class Student{
        int id;
        String name;
        char sex;
        int age;
        Grade g=new Grade;//注意:g没有赋值时,则默认为null
        //不会包异常,班级编号显示0,名称null
        public void showInfo(){
            System.out.println("学号信息如下");
            System.out.println("学号:"+id+"
    姓名:"+name+"
    性别:"+sex+"
    年龄"+age+"
    班级编号"+g.num+"
    班级名称"+g.name);
    
        }
    }
    //测试类
    class Test{
        public static void main(String[] args){
        //通过有参构造方法,创建班级对象
        Grade grade=new Grade(432,"java基础","四楼");
        //通过无参构造方法,创建学生类对象
        Student s=new Student();
        //调用显示信息的方法显示学生的信息
        s.showInfo();
        }
    }



    3.当一个对象中的属性是引用类型内存分析
    4.对用户自定义类型的属性赋值方法

    class Student{
    //构造
        public Student(){
        
        }
        public Student(int id,String name,char sex,int age,Grade g){
         this.id=id;
         this.name=name;
         this.sex=sex;
         this.age=age;
         this.g=g;
        }
    }
    //测试类
    class Test{
        public static void main(String[] args){
        //通过有参构造方法,创建班级对象
        /*Grade grade=new Grade(432,"java基础","四楼");
        //通过无参构造方法,创建学生类对象
        Student s=new Student();
        //调用显示信息的方法显示学生的信息
        s.showInfo();*/
    //创建学生对象同时对学生中多有的属性赋值
    Student s2=new Student(1001,"李四",'男',21,new Grade(324,"java","hahah"));
    s2.showInfo();
        }
    }



    5.为什么要封装
        --有些属性不符合实际意义,在赋值之前进行判断,当前值如果合法进行赋值
        否则不惊醒赋值

    6.面向对象的三大特性
        封装--继承--多态---还有一个抽象

    7.封装操作步骤
    --定义:隐藏类的内部信息,不允许外部程序终结访问,
        而是通过方法进行操作
    ---封装操作步骤


    class Student{
        String name;
        //第一步:讲属性设置为私有的private,只能在本类中使用
        int age;
        char sex;
        //编写对应属性的赋值setXXX和get取值方法
        public void setAge(int age){
        //将局部变量的值赋给成员变量
        this.age=age;
            }
        public int getAge(){
            return age;//表示返回成员变量age的值
        }
        }
        
    //编写学生测试类
    class StudentTest{
        public static void main(String[] args){
        //实例化学生
        Student s=new Student();
        s.name="张三";
        /*
            通过运行发现问题:
                有些属性,如年龄,性别,不符合实际意义
                解决办法:
                    有些属性不符合实际意义,在赋值之前进行判断,当前值如果合法进行赋值
                    否则不进行赋值
        */
        s.age=1234;
        s.sex='a';
        System.out.println("姓名:"+s.name+"
    年龄:"+s.age+"
    性别:"+s.sex);
        
        s.setAge(123456);
        System.out.println("年龄:"+s.getAge());
        }


    }

  • 相关阅读:
    cpp:博文_注意
    Algs4-1.2(非习题)String
    Algs4-1.2(非习题)几何对象中的一个2D用例
    Algs4-1.2.19字符串解析
    Algs4-1.2.18累加器的方差
    Algs4-1.2.17有理数实现的健壮性
    Algs4-1.2.16有理数
    Algs4-1.2.15基于String的split()的方法实现In中的静态方法readInts()
    Algs4-1.2.13实现Transaction类型
    Algs4-1.2.14实现Transaction中的equals()方法
  • 原文地址:https://www.cnblogs.com/fdxjava/p/10644414.html
Copyright © 2020-2023  润新知