栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java第十一天

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java第十一天

一. 多态在实际开发中的作用?
1.降低程序的耦合度,提高程序的扩展里。
2.能使用多态尽量使用多态。
3.父类型引用指向子类型对象
核心:面向抽象编程,尽量不要面向具体编程
应用实例:
1)程序的入口:主函数

public class Test {
    public static void main(String[] args) {
        //创建主人对象
        Master zhangsan=new Master();
        //创建猫对象
        Cat tom=new Cat();
        //主人喂养猫
        zhangsan.feed(tom);
        //zhangsan.feed(new Cat());
        //创建小狗对象
        Dog erHa=new Dog();
        //主人喂小狗
        zhangsan.feed(erHa);
        //zhangsan.feed(new Dog());
    }
}

2)主人类

public class Master {
    //Master主人类面向的是一个抽象的Pet,不再面向具体的宠物
    //提倡:面向抽象编程,不要面向具体编程
    //面向抽象编程的好处,耦合度低,扩展力强
    public void feed(Pet pet){
        pet.eat();
    }
}

3)宠物类

public class Pet {
    //宠物可以吃东西
    public void eat(){
    }
}

4)小猫类

public class Cat extends Pet{
    public void eat(){
        System.out.println("小猫在吃鱼!");
    }
}

5)小狗类

public class Dog extends Pet{
    public Dog(){
        System.out.println("小狗在吃肉!");
    }
}

二.关于Java语言当中final关键字:
1.final是一个关键字,表示最终的,不可变的。
2.final修饰的类无法被继承。
3.final修饰的方法无法被覆盖。
4.final修饰的变量一旦赋值之后,不可重新赋值。
5.final修饰的实例变量,必须手动赋值,不能采用系统默认值。
6.final修饰的引用,一旦指向某个对象之后,不能再指向其它对象,那么被指向的对象无法被垃圾回收器回收。
7.final修饰的实例变量,一般和static联合使用,被称为常量。
样例1:

public class Main {
    //成员变量之实例变量
    //实例变量有默认值+final修饰的变量一旦赋值不能重新赋值
    //综合考虑,Java语言最终规定实例变量使用final修饰之后,必须手动赋值,不能采用系统默认值。
    //final int age;//编译错误

    //第一种解决方案
    final int age=10;

    //第二种解决方案
    final int num;
    public Main(){
        this.num=200;
    }

    //以上的两种解决方案:其实本质上就是一种方式,都是在构造方法执行过程当中给实例变量赋值。

    public static void main(String[] args) {
        final int a;
        a=100;
        //不可第二次赋值
        //a=200;

        System.out.println(a);//100
        Main s=new Main();//访问实例变量,先创建对象,再访问
        System.out.println(s.age);//10
        System.out.println(s.num);//200
    }
}

样例2:

public class Main {
    public static void main(String[] args) {
        int i=10;
        System.out.println(i);//10
        i=20;
        System.out.println(i);//20

        final int k=100;
        //编译错误:无法为最终变量k分配值
        //k=200;
        System.out.println(k);//100

        final int m;
        m=200;
        //编译错误:无法为最终变量m分配值
        //m=300;
        System.out.println(m);//200
    }
}

样例3:

public class Main {
    public static void main(String[] args) {
        //创建用户对象
        User u=new User(100);//User u=0x1234;
        System.out.println(u.id);//100
        //又创建了一个新的User对象
        //程序执行到此处表示以上对象已变成垃圾数据,等待垃圾回收器的回收。
        u=new User(200);
        System.out.println(u.id);//200
        
        //创建用户对象
        final User user=new User(30);
        //User=new User(50);//final修饰的引用,一旦指向某个对象之后,不能再指向其它对象,那么被指向的对象无法被垃圾回收器回收。
        System.out.println(user.id);//30
        user.id=50;//final修饰的引用虽然指向某个对象之后不能指向其他对象,但是所指向的对象内部的内存是可以被修改的。
        System.out.println(user.id);//50
    }
}

样例4:

public class Main {
    public static void main(String[] args) {
        System.out.println(Chinese.GUO_JI);
    }
}
//中国人
class Chinese{
    //国籍
    //需求:每一个中国人的国籍都是中国,而且国籍不会改变,为了防止国籍被修改,建议加final修饰。
    //final修饰的实例变量是不可变的,这种变量一般和static联合使用,被称为"常量"
    //常量的定义语法格式:
    //  public static final 类型 常量名 = 值
    //java规范中要求所有常量的名字全部大写,每个单词之间使用下划线连接
    public static final String GUO_JI = "中国";
}

样例5:

public class Main {
    public static void main(String[] args) {
        System.out.println(Math.PI);
    }
}
//圆周率
class Math{
    public static final double PI=3.1415926;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/820410.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号