首页 > 其他分享 >2023/7/03

2023/7/03

时间:2023-07-03 16:56:16浏览次数:24  
标签:03 void System public 2023 println final out

今天学习了Java中的inal,多态抽象类和接口

final相当于C++中的const,对于用final声明的变量,一旦被设定,就不能改变改变量的值,一对象的引用被final修饰后,他就只能恒定指向一个对象无法使其指向另一个对象。

在父类中被final修饰的方法不能在子类中被隐藏,被final修饰的类是不能被继承的,该类中所有的方法都被隐式设定为final方法,但是成员变量可以被定义为final或非final形式。

package final关键字;

public class 变量 {
    final static double PI=3.1415926;
    public static void main(String[] args)
    {
        System.out.println(PI);
        //PI=3;被final修饰后将无法改变变量的值
        final 变量 a=new 变量();
        //a=new 变量();被对象的引用被final修饰后也无法改变其指向另一个变量
        final int b[]=new int[3];
        //b[]=new int[3];数组也可以看成一个对象来引用所以这里也是会报错的
    }
    final void show()
    {
        System.out.println("变量");
    }
    static void show1()
    {
        System.out.println("变量1");
    }
    private void show2()
    {
        System.out.println("变量3");
    }
}
package final关键字;

public class 变量 {
    final static double PI=3.1415926;
    /*public static void main(String[] args)
    {
        System.out.println(PI);
        //PI=3;被final修饰后将无法改变变量的值
        final 变量 a=new 变量();
        //a=new 变量();被对象的引用被final修饰后也无法改变其指向另一个变量
        final int b[]=new int[3];
        //b[]=new int[3];数组也可以看成一个对象来引用所以这里也是会报错的
    }*/
    final void show()
    {
        System.out.println("变量");
    }
    static void show1()
    {
        System.out.println("变量1");
    }
    private void show2()
    {
        System.out.println("变量3");
    }
}

package final关键字;

final public class 方法 extends 变量
{
    public int f=3;
    public static void main(String[] args)
    {
        方法 a=new 方法();
        a.show1();
        a.show2();
    }
    /*final void show()
    {
        System.out.println("方法");
    }
    被final定义的方法不能被覆盖或者隐藏,在父类定义的方法在子类中不能再定义修改该种方法
    */
    static void show1()//没有final修饰所以可以覆盖或者修改,注意:父类一个静态的方法不能在子类被修改为非动态,反之也是
    {
        System.out.println("变量2");
    }
    private void show2()//父类种的此方法被定义为私有方法,子类自然无法访问,所以不会出现覆盖的现象,但是private类型发方法隐式被指定为final类型
    {
        System.out.println("变量4");
    }
}
package final关键字;

public class 变量 {
    final static double PI=3.1415926;
    /*public static void main(String[] args)
    {
        System.out.println(PI);
        //PI=3;被final修饰后将无法改变变量的值
        final 变量 a=new 变量();
        //a=new 变量();被对象的引用被final修饰后也无法改变其指向另一个变量
        final int b[]=new int[3];
        //b[]=new int[3];数组也可以看成一个对象来引用所以这里也是会报错的
    }*/
    final void show()
    {
        System.out.println("变量");
    }
    static void show1()
    {
        System.out.println("变量1");
    }
    private void show2()
    {
        System.out.println("变量3");
    }
}

package final关键字;

final public class 方法 extends 变量
{
    public int f=3;
    public static void main(String[] args)
    {
        方法 a=new 方法();
        a.show1();
        a.show2();
    }
    /*final void show()
    {
        System.out.println("方法");
    }
    被final定义的方法不能被覆盖或者隐藏,在父类定义的方法在子类中不能再定义修改该种方法
    */
    static void show1()//没有final修饰所以可以覆盖或者修改,注意:父类一个静态的方法不能在子类被修改为非动态,反之也是
    {
        System.out.println("变量2");
    }
    private void show2()//父类种的此方法被定义为私有方法,子类自然无法访问,所以不会出现覆盖的现象,但是private类型发方法隐式被指定为final类型
    {
        System.out.println("变量4");
    }
}

package final关键字;

public class 类 //extends 方法;final类不被任何类继承并且不允许其他人对此类进行改动
{
    public static void main(String[] args)
    {
        方法 a=new 方法();
        a.f=4;//final类中的成员变量可以被定义为final或者非final类
        System.out.println(a.f);
    }
}

对于多态,就是可以通过向上转型用父类的对象引用子类的对象,在不同的参数时调用不同的对象的同名同参的方法

package 多态;

public class Shape {
    
    public void show()
    {
        System.out.println("打印图形");
    }
}
package 多态;

public class circular extends Shape
{
    public void show()
    {
        System.out.println("打印圆");
    }
}
package 多态;

public class Square extends Shape
{
    public void show()
    {
        System.out.println("打印正方形");
    }
}
package 多态;

public class d {
    public static void main(String[] args)
    {
        show(new Shape());
        show(new Square());
        show(new circular());
        Shape c=new Square();
        c.show();
    }
    public static void show(Shape s)//用父类对象引用子类对象来直接调用当前子类对象对应的方法
    {
        s.show();
    }
    /*
     * 之前向上类型转换中提到的父类对象引用子类对象无法调用子类的方法指的是父类与子类中不同名的方法
     * 也是就是子类的特有方法,但是对于子类和父类都有执行方式不同的方法就会根据父类对象引用的实际对象来调用对应方法
     * 这一点像C++中的虚函数
     */
}

使用abstract关键字定义的抽象类,有抽象方法一定时抽象类,抽象类不一定有抽象方法,抽象类中的非抽象方法和成员可以在子类中正常使用,而抽象方法必须在子类中被重写,否则会报错。抽象类不能实例化抽象类对象,但是可以实例化其子类对象,通过多态方法来调用不同类中的方法,但是调用的方法必须时在多态类中的抽象方法的重写方法。注意:抽象方法不能为private类型

package 抽象类与接口;

public abstract class Abstract {
    abstract void name();
    public int a=3;
}
package 抽象类与接口;

public class father extends Abstract{
    public void name()
    {
        System.out.println("father"+a);
    }
}
package 抽象类与接口;

public class son extends father
{
    public void name()
    {
        System.out.println("son"+a);
    }
}

package 抽象类与接口;

public class haihaihai {
    public static void main(String[]args)
    {
        show(new father());//不能直接创建抽象类,但可以创建非抽象的对象
        show(new son());
        Abstract d=new father();
        d.name();
    }
    static void show(Abstract s)//通过其引用的对象来调用对应的方法
    {
        s.name();
    }
    //像C++中的抽象类和纯虚函数,抽象类子类的方法必须重写,否则会报错
}

最后是接口,接口的使用是为了优化抽象类每个子类都必须重写抽象类中的抽象方法。接口的使用方法和抽象类相似,在实现接口后,该接口后的所有子类都必须重写该接口内的方法。接口中的方法为public abstract类型,所以实现接口的类中重写的方法必须是指明public。可以用接口对象引用类的对象,但是只能用这种方法实现接口中含有的方法的多态。

package 接口;

public class one implements zero,ten
{
    public void show()//必须被定义为public类型
    {
        System.out.println("1");
    }
    public void name() {
        System.out.println("1,10");
    }
}
package 接口;

public interface ten {
    void name();
}
package 接口;

public class three implements zero{
    public void show()
    {
        System.out.println("3");
    }

}
package 接口;

public class two extends one{
    public void show()
    {
        System.out.println("2");
    }
    public void name() {
        System.out.println("1,10");
    }
}
package 接口;

public interface zero {
    void show();
}
package 接口;

public class hahaha {

    public static void main(String[] args) 
    {
        zero a=new one();
        zero b=new two();
        zero c=new three();//可以直接用接口的对象引用类的对象,无论类之间有没有继承关系都可以通过这种方法直接访问该类的该方法
        ten d=new one();
        d.name();//对于多接口,只能访问对应接口的方法
        a.show();
        b.show();
        c.show();
    }

}

 

标签:03,void,System,public,2023,println,final,out
From: https://www.cnblogs.com/zhenaifen/p/17523280.html

相关文章

  • 记一次.net加密神器 Eazfuscator.NET 2023.2 最新版 使用尝试
    合集-.net代码混淆加密产权保护(2) 1.记一次.net加密神器Eazfuscator.NET2023.2最新版使用尝试06-272.将SmartAssembly与单文件可执行文件一起使用(.NETCore6)06-27收起 很多人看到这个Eazfuscator.NET还不知是什么东东。。。首先介绍下。什么是Eazfu......
  • C++面试记录——2023.7.3
    1、什么是虚函数?(基础反而卡住了,往多态方面说了)  2、虚函数实现原理?(不知道) 3、什么是完美转发?(没学深,浅浅说了跟右值引用相关) 4、构造函数有哪些?(默认、带参、拷贝、移动) 5、现有一个右值变量,如何调用移动构造函数?(麻了,不会) 6、知道lambda表达式吗?(C++11特性,匿......
  • SketchUp Pro 2023-草图大师3D设计软件mac/win版
    SketchUpPro2023是一款领先的3D建模和设计软件,广泛应用于建筑、室内设计、景观规划、工业设计等领域。它以其直观易用的特点而受到许多设计师和建筑专业人士的青睐。→→↓↓载SketchUpPro2023mac/win版 SketchUpPro2023拥有用户友好的界面和简单直观的工作流程,使得从......
  • 20230703赛后复盘
    复盘时间安排8:00~8:30写&调试T1正解,过样例8:30~8:50想写T2正解,然而胡错了(所以又重写了)8:50~9:10写T2的\(O(kn^2)\)部分分然后瞟了眼T3感觉不会,跳过去看T49:10~9:40推T4的正解。推了一半,卡在进位的处理上(悲)9:40~9:50爬去写暴力9:50~10:00回头写了个T3部分分最后一个多......
  • CodeGeeX荣获2023稀土开发者大会“年度最佳开发工具”奖项
    XDC2023稀土开发者大会6月30日在北京成功举办,今年大会主题为“代码不止,掘金不停”。除了为开发者提供多达60场+的技术分享之外,针对开发者使用的工具也展开了一系列的专业评选,这也是每年大家非常期待的环节。开发工具是每个开发者每天都会使用的产品,深度影响着开发者的工作效率和......
  • 2023-7-3 #63 点燃星 亲手点燃目光尽头的准星
    430Ptz2020WinterDay8.AlmostAlgorithmicContestAUmnik'sAlgorithm结论:对于最大匹配为\(K\)的二分图\(G\),使用dinic增广\(t\)次后得到的匹配\(M\)满足\(|M|\geqslant\fract{t+1}|K|\)。证明:考察\(K\)与\(M\)对称差,其由\(|K|-|M|\)条链组成,且每条链......
  • 20230703 讲题
    CF1394DBoboniuandJianghu容易发现若\(b_u\neb_v\)则边的方向确定,问题转化为给\(b_u=b_v\)的边定向。设\(f_{u,0/1}\)为\(u\)连向父亲的点的方向是\(u\tofa\)还是\(fa\tou\)。我们知道一个点的贡献系数是\(\max(in,out)\),其中\(in\)和\(out\)为入......
  • 第二届电子电气与信息工程国际会议(EEIE2023)
    第二届电气、电子与信息工程国际会议(EEIE2023)将于2023年11月2-4日在中国南昌召开。EEIE2023由中国南昌理工学院和湖北省众科地质与环境技术服务中心主办。 所有被接受的论文将被EICompendex和Scopus检索。我们谨代表组委会向各位杰出的学者和工程师发出诚挚的邀请。★重......
  • 2023“九成宫杯”陕西宝鸡·麟游夏季半程马拉松赛顺利完赛
    1、赛事背景2023年6月22日,2023“九成宫杯”陕西宝鸡·麟游夏季半程马拉松赛圆满落幕,“九成宫杯”陕西宝鸡·麟游夏季半程马拉松赛自2018年举办以来,至今已成功举办4届,荣膺中国田协认证的A1类赛事。近年来,麟游夏季半程马拉松以其独特的赛道、丰富的参赛人群和细致周到的服务吸引......
  • OGG-02912 Patch 17030189 is required on your Oracle mining database for trail fo
    Therewillbeascript"prvtlmpg.plb"undergghomedirectory[oracle@OGGR2-1ogg]$ls-lrtprvtlmpg.plb-rw-r-----1oracleoinstall9487May272015prvtlmpg.plb[oracle@OGGR2-1ogg]$pwd/ogg[oracle@OGGR2-1ogg]$Logintothedatabaseand......