类与对象:类与继承

1. 类与继承

参考文章1  参考文章2  菜鸟教程

【Java基本功】一文了解Java中继承、封装、多态的细节

类 class:

类只有在需要的时候才会被加载,只会加载一次

类在加载时,会初始化静态static变量,会执行static包括的块

类在实例化对象时,先会初始化变量,再接着执行构造函数

继承 extends:

java是单继承的,子类只可以显式的继承一个父类

子类继承父类的变量:

子类可以继承父类的public,protected,不能继承private

super关键字:

当前对象的父类的引用。

通过super可以访问父类的public,protected变量和成员方法,是访问不到private的

this关键字

public class Person {
    String name;
    public void tallk(String name) {
        System.out.println(this.name);//表示当前对象的name  指向对象自己的引用         
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;  通过对象关键字访问对象的属性
    }
}
public class MainTest {
    public static void main(String[] args) {            
        Person p1=new Person();
        p1.setName("yyy");    
        p1.tallk("ZZZ");
    }
}
public class Hello {
    private String name;
    private Integer number;
    public Hello(String name){
        this.name=name;
    }
    public Hello(String name,Integer number){
        this(name);  通过this来调用其他的构造函数
        this.number=number;
    }
    public void print() {
        System.out.println("name="+name+" number="+number.toString());    
    }
}
public class MainTest {
    public static void main(String[] args) {            
        Hello hello=new Hello("yy", 2);
        hello.print();
    }
}
public class Apple {
    Apple getPeeled(){
        return Peeler.peel(this);  为了将其自身传递给外部方法,必须使用this关键字
    }
}
public class Peeler {
    public static Apple peel(Apple apple){
        return apple;
    }
}
public class Person {
    public void eat(Apple apple){
        Apple peeeled=apple.getPeeled();
        System.out.println("yuyumin");
    }
}
public class MainTest {
    public static void main(String[] args) {                    
        new Person().eat(new Apple());
    }
}

Apple需要调用Peeler.peel()方法,他是一个外部的工具方法,将执行由于某种原因而必须放在Apple外部的操作(也许是因为该外部方法要应用于许多不同的类,而你却不想重复这些代码)

分析:设想一个场景,假如各种水果去皮的工作都是一样的,只要给我水果,我都按同样的方法去皮。那么结合上面的例子,传进来一个水果,我们吃之前getPeeled(),

必须将此水果作为参数传递给外部的peel(),用this来代表自身传递给外部方法。

 参考:https://www.cnblogs.com/yefengyu/p/4821582.html

final关键字

final声明类,即类不能被继承,最终类,被声明为final类的方法被自动声明为final

final声明变量,变量不能被修改

final声明方法,方法不能被重写

构造器:

子类不继承父类的构造器,只是隐式或显式的去调用。

对于无参的父类构造器,子类在实例化时会自动调用,而对于有参的需要super去显式调用

重写override与重载overload

父类的private方法对于子类来说是隐藏的,子类不能重写也不能重载

可以用super来调用父类中被覆盖的方法。

访问控制符参考1参考2

private,protected,public,default(缺省)

对于缺省的变量或方法,可以在定义类,同包的类或子类中使用

 

java类的加载,初始化:

https://www.cnblogs.com/yahokuma/p/3668138.html

https://blog.csdn.net/u013349237/article/details/71076617

java类加载器:

 

https://blog.csdn.net/javazejian/article/details/73413292

https://blog.csdn.net/javazejian/article/details/70768369

 【Java基本功】聊聊抽象类和接口的区别

参考:

 

 

 

 

 

 

 

 

 

       

posted @ 2018-09-10 13:57  弱水三千12138  阅读(203)  评论(0)    收藏  举报