Java面向对象

时间:2021-04-20 15:11:01   收藏:0   阅读:0

this关键字

this关键字的作用:

@Data
public class jtest {
   private String name;
   public jtest(){
       //调用构造方法,只能在构造方法中使用,且必须是第一行
       this("dwx");
   }
   public jtest(String name){
       //区分成员变量和局部变量
       this.name=name;
   }
   public void sN(){
       //调用类中其他方法
       this.setName("dwx");
   }
}

this在类中表示当前类将来创建出来的对象

封装,继承,多态

使用private修饰需要封装的成员变量;提供一个公开方法来获取和设置成员变量

Java中类只有单继承,没有多继承,接口可以多继承

Super关键字

在子类继承父类后,可以使用super来访问或调用父类中方法或属性

子类构造器会隐式调用父类的无参构造(super()),如果父类的无参构造被有参构造覆盖,则不能调用父类无参构造

super调用父类构造器必须在子类构造器的第一行、

方法重写:

静态方法不能重写:

私有方法不能被子类重写,因为子类继承父类不能直接访问父类的私有方法,但是可以拥有两个同名的方法

方法在重写时:

多态

一个父类的引用可以指向其任何一个子类对象

编译看左边:找编译时,编译器会检测对象引用类型中是否含有指定的成员,没有就会报错

instanceof:x instanceof y,主要看变量x与变量y是否存在父子关系,有父子关系编译会通过,没有父子关系编译会报错;输出是true还是false要看x指向的实际类型是不是y的子类

总结:

修饰符

代码块(匿名代码块)和静态代码块,匿名代码块的作用主要是初始化成员变量的值

public class jtest {
    //匿名代码块
    {
        System.out.println("执行匿名代码块");
    }
    static {
        System.out.println("执行静态代码块");
    }

    public static void main(String[] args) {
        //类加载,执行静态代码块,只执行一次;创建对象时自动执行匿名代码块,执行两次
        jtest jtest1=new jtest();
        jtest jtest2=new jtest();
    }
}

抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类

接口

接口中的变量都是静态常量(public static final修饰的)

一个类可以实现多个接口,且需要实现所有接口里的方法,如果没有全部实现,则需要将这个类声明为抽象类

一个接口可以继承多个父接口

内部类

内部类分为4种:

成员内部类

成员内部类不能写静态方法或静态属性

public class JavaTest {
    class Inner{
    }
    public static void main(String[] args) {
        //先实例化外部类
        JavaTest javaTest=new JavaTest();
        //再实例化内部类
        JavaTest.Inner inner=javaTest.new Inner();
    }
}

成员内部类作用:

public class JavaTest {
    private int id;
    class Inner{
        private  int id=9;
        public void test(){
            System.out.println(JavaTest.this.id);
        }
    }
    public static void main(String[] args) {
        //先实例化外部类
        JavaTest javaTest=new JavaTest();
        //再实例化内部类
        JavaTest.Inner inner=javaTest.new Inner();
        inner.test();
    }
}

静态内部类

静态内部类直接用外部类类名来实例化就行

public class JavaTest {
    private int id;
    public static class Inner{

    }
    public static void main(String[] args) {
       JavaTest.Inner inner= new JavaTest.Inner();
       
    }
}

不能访问外部内的非静态变量或方法,可以声明自己的静态变量和方法

局部内部类

局部内部类是在一个方法内部声明一个类,可以访问外部类的成员变量和方法,局部内部类要访问其所在方法的局部变量,局部变量必须是final修饰

局部内部类由其所在方法实例化

匿名内部类

匿名内部类需要依托于其他类或接口创建

匿名内部类的声明必须是在使用new关键字时。

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!