资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

JavaSe基础2022年12月12日学习内容

Java 更新时间: 发布时间: 计算机考试归档 最新发布

JavaSe基础2022年12月12日学习内容

JavaSe-2022-12-12面向对象

每日一句: 永远给自己一个目标,无论大小,让心能展翅飞翔。

学习内容:Object类、接口、使用接口向下转型、内部类

  • Object类

    • Object所有类的顶级父类,java.lang包下(lang包不需要导包,JVM运行时自动调用)

    • 该类定义了类最基础的11个方法其中只抽出重要的三个看看

      • toString():按照指定形式输出对象信息

      • equals():用于比较对象是否相等,比较的本质是对象的属性值

      • hashCode():返回该对象的hash值,相同的对象的哈希值是相同的,建议hashCode和equals一起重写,尽可能保证不同的对象哈希值不同

      • public class TestObject {
            public static void main(String[] args) {
                Aoo aoo = new Aoo();
                System.out.println(aoo);//不重写toStgring,则打印对象的类似地址值
                Aoo a1= new Aoo(1,2);
                Aoo a2= new Aoo(1,2);
                System.out.println(a1==a2);//使用等号比较的是地址值
                System.out.println(a1.equals(a2));//true如果重写Aoo的equals方法
            }
        }
        //如果一个类没有显示继承其他类,则默认继承Object
        class Aoo extends Object{
            int i;
            int j;
            public Aoo(){
        
            }
        
            public Aoo(int i, int j) {
                this.i = i;
                this.j = j;
            }
        
            @Override
            public boolean equals(Object o) {
                if (this == o) return true;
                if (o == null || getClass() != o.getClass()) return false;
                Aoo aoo = (Aoo) o;
                return i == aoo.i && j == aoo.j;
            }
        
            @Override
            public int hashCode() {
                return Objects.hash(i, j);
            }
        
            @Override
            public String toString() {
                return "Aoo{" +
                        "i=" + i +
                        ", j=" + j +
                        '}';
            }
        }
        
  • 接口

    • 概念:在Java语言中是一个抽象型,是抽象方法的集合,接口通常以interface来声明,一个类通过继承接口的方式,从而来继承接口的抽象方法。

    • 定义格式

      interface 接口名{
      	public 函数返回值类型 函数名();
      }
      
    • 使用interface关键字,JDK1.8以前含有常量和抽象方法

    • 接口没有构造方法,接口不能被实例化。接口可以被多个使用

    • 使用接口必须实现接口中的方法

    • 接口中修饰的都是抽象方法

    • 一个类必须实现接口抽象方法,除非这个类也是抽象类,

    • 一个接口不能实现另外一个接口,但是可以继承多个其他接口

    • 接口中的定义

      • public interface TestInterface{
        	int MAX_VAlUE = 10; //常量,默认使用 public static final修饰
        	void f(); //抽象方法,默认使用public abstract修饰
        }
        
      • 代码的实现

      • //创建一个接口
        public interface Paper {
            String getSize();
        }
        //实现接口重写方法
        class A4Paper implements Paper{
        	@Override
            public String getSize() {
                return "A4";
            }
        }
        
    • 向下转型的两种方式

      •  public static void main(String[] args) {
        //        一般不使用 最基本使用方法
        //        SafeDoor sd = new SafeDoor();
        //        sd.lock();
        //        sd.unLock();
        //        sd.open();
        //        sd.close();
        //        向上转型
                Door d = new SafeDoor();
                d.close();
                d.open();
                // 1. 使用向下转型,强制转为子类
        //        if(d instanceof SafeDoor){
        //            SafeDoor s = (SafeDoor) d;
        //            s.unLock();
        //            s.lock();
        //        }
        //        2. 将接口看成父类
                Lock l = (Lock) d;
                l.unLock();
                l.lock();
            }
        
  • 内部类

    • 内部类中重点是匿名内部类

      • public class TestInnerClass {
        
            public static void main(String[] args) {
                //创建内部类
                Outer outer = new Outer();
                System.out.println(outer.a);
                Outer.Person p = outer.new Person();
                p.f();
                p.print();
        //        静态内部类的创建
                Outer.Coo coo = new Outer.Coo();
                coo.print();
                //局部内部类作用域只能在main方法中访问
                Test t = new Test();
        
                //匿名内部类适用于接口和抽象类,普通类只想创建一个实例
                //且不想让其他类访问这个类
                Ioo ioo = new Ioo() {
                    @Override
                    public void test() {
                        System.out.println("test");
                    }
                };
                ioo.test();
                //练习:使用匿名内部类创建woo的一个实例,并调用其方法
                Woo w  = new Woo() {
                    @Override
                    public boolean equals(Object obj) {
                        return super.equals(obj);
                    }
                };
                w.show();
        
            }
        }
        abstract  class Woo{
            public void show(){
                System.out.println("跑");
            }
        }
        
        interface Ioo{
            void test();
        }
        class Outer{ //外部类
            public int a;
            public class Person{
                int id;
                String name;
                int age;
                public void f(){
                    System.out.println("Person");
                }
                public void print(){
                    System.out.println(a);//内部类可以访问外部类的资源
                }
            }
            static int b;
            public static class Coo{
                int c;
                static int d;
                public void print(){
        //            System.out.println(a); //静态内部类中不能访问非静态属性
                    System.out.println(b);
                }
            }
        
        }
        
  • gitee代码仓库地址:https://gitee.com/Zhengsenbing/java-se-basic

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1094327.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【JavaSe基础2022年12月12日学习内容】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2