javaSE21/9/9

时间:2021-09-11 13:26:39   收藏:0   阅读:20

面向对象

多态

存在的条件:

无法重写

instanceof

public class App {
    public static void main(String[] args) {
        Object object = new Student();
        /*
        System.out.println(x instanceof y);
        判断x和y是不是父子关系,看x所指向的实际类型是不是y的子类
         */
        System.out.println(object instanceof Student);//true
        System.out.println(object instanceof Person);//true
        System.out.println(object instanceof Object);//true
        System.out.println(object instanceof Teacher);//false
        System.out.println(object instanceof String);//false
    }
}
public class Student extends Person {
    
}
public class Teacher extends Person{

}
public class Person {
  
}

引用类型转换

public class App {
    public static void main(String[] args) {
       Person person = new Student();//Student转Person,低转高,可以直接转
        //将这个person对象转换为Student类型,我们就可以使用Student类型的方法了
        /*Student student = (Student) person;//Person类转换为Student类,高转低,需要强制转换
        student.go();
         */
        ((Student)person).go();
    }
}
public class Student extends Person {
    public void go(){

    }
}
public class Person {
    public void run(){
        System.out.println("run");
    }
}

static

public class App {
    private static int age;
    private double score;
    public void run(){
       go();//非静态方法可以调用静态方法
    }
    public static void go(){//静态方法可以调用静态方法,不能调用非静态方法

    }
    public static void main(String[] args) {
        App a1 = new App();
        System.out.println(App.age);//加了static关键字的属性额可用类名.属性调用
        System.out.println(a1.score);
    }
}
public class Person {
    //2 第二个执行,匿名代码,不能主动调用,可以用来赋一些初始值
    {
        System.out.println("匿名代码块");
    }
    //1 最先执行,但只执行一次,静态代码块:该类一加载就执行
    static {
        System.out.println("静态代码快");
    }
    //3 第三个执行构造方法
    public Person() {
        System.out.println("构造方法");
    }

    public static void main(String[] args) {
        Person person = new Person();
    }
}
import static java.lang.Math.random;//静态导入包
public class App {
    public static void main(String[] args) {
        System.out.println(random());//静态导入包后 可直接用
    }
}

抽象类

//抽象类的所有方法,继承了它的子类都必须要实现它的方法,除非子类也是抽象类
public class Student extends Person{
    @Override//要继承抽象类,必须方法重写
    public void go() {

    }
}
//抽象类的所有方法必须由子类实现
public abstract class Person {//抽象类
    public abstract void go();//抽象方法,只有方法名,没有方法的实现
}

接口:本质是契约

接口的作用

public interface UserService {//接口都需要有实现类
    //接口中的所有定义其实都是抽象的public
    void add(String name);//接口中的方法:返回值类型 方法名(参数);
    void delete(String name);//只有定义,没有具体的实现
    void update(String name);
    void query(String name);
}
public interface TimeService {
    void timeer();
}
//java是单继承,但可以利用接口实现多继承
public class UserServiceImpl implements UserService,TimeService{//实现类名一般在接口名后加Impl
    //要实现借口里的定义,必须要在实现类里重写方法
    @Override
    public void add(String name) {

    }

    @Override
    public void delete(String name) {

    }

    @Override
    public void update(String name) {

    }

    @Override
    public void query(String name) {

    }

    @Override
    public void timeer() {

    }
}

原文:https://www.cnblogs.com/wpxz1005/p/15249575.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!