java入门 (七) 面向对象(三)

java入门(七)面向对象(三)

  1. static关键字详解
  2. 抽象类
  3. 接口的定义与实现
  4. N种内部类

static关键字详解

//static
public class Student {
    private static int age;//静态的变量  多线程里用的多!
    private double score;//非静态的变量


    public void run(){

    }
    public static void go(){

    }
    public static void main(String[] args) {
        Student s1 = new Student();

    }
}
public class Person {
    //赋初始值
    {
        System.out.println("匿名代码块");//第二
    }

    //只执行一次
    static {
        System.out.println("静态代码块");//第一
    }

    public Person() {
        System.out.println("构造方法");//第三
    }

    public static void main(String[] args) {
        Person person = new Person();
        System.out.println("======");
        Person person1 = new Person();
    }
}
//静态导入包
import static java.lang.Math.random;
public class Test {
    public static void main(String[] args) {
        System.out.println(random());
    }
}

抽象类

abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是抽象方法,如果修饰类,那么该类就是抽象类

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

抽象类,不能使用new关键字来创建对象,它是用来让子类继承的

抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的

子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类

//抽象类:类 extends 单继承。 java中的的接口可以多继承
public abstract class Action {
    //约束 有人帮我们实现
    //abstract,抽象方法,只有方法名字,没有方法的实现
    public abstract void doSomething();


    //1.不能new这个抽象类,只能靠子类去实现它,约束
    //2.抽象类中可以写普通方法
    //3.抽象方法必须在抽象类中

}
//抽象类的方法,继承了它的子类,都必须要实现它的方法。除非子类也是抽象类
public class A extends Action{
    @Override
    public void doSomething() {

    }
}

总结:

  1. 不能new这个抽象类,只能靠子类去实现它,约束
  2. 抽象类中可以写普通方法
  3. .抽象方法必须在抽象类中

接口的定义与实现

普通类:只有实现类

抽象类:具体实现和规范(抽象方法)都有!

**接口:只有规范,无法自己写方法~专业的约束!约束和实现分离:面向接口编程。 **

接口就是规范,定义的是一组规则,体现了现实世界中,“如果你是..则必然能”的思想。如果你是天使,则必然能飞,如果你是汽车,则必然能跑等

接口的本质是契约,就像我们的法律一样,制定好后大家都要遵循

OO的精髓,是对对象的抽象,最能体现这一特点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如C++,Java,c#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象

声明类的关键字是class,声明接口的关键字是interface

//interface 定义的关键字,接口都需要有实现类
public interface UserService {
    //接口中的所有定义其实都是抽象的, Public
    void add(String name);
    void delete(String name);
    void update(String name);
    void query(String name);
}
//抽象的思维 Java 架构师~
//类可以实现接口
//利用接口实现多继承
public class UserServiceImpl implements UserService,TimeService {

    @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 time() {

    }
}

总结:

接口的作用

  1. 像法律一样起约束作用
  2. 定义一些方法,让不同的人实现
  3. 所有方法前缀都是 public abstract
  4. 所有常量前缀都是 public static final
  5. 接口不能被实例化接口中没有构造方法
  6. implements可以继承多个接口
  7. 必须要重写接口中的方法

N种内部类

扩展

内部类就是在一个类的内部在定义一个类,比如,A类种定义一个B类,那么B类相对A类来说就称为内部类,而A类相对于B类来说就是外部类了

  1. 成员内部类
  2. 静态内部类
  3. 局部内部类
  4. 匿名内部类
public class Outer {
    private int id = 10;

    public void out(){
        System.out.println("这是外部类的方法");
    }

    public class Inner{
        public void in(){
            System.out.println("这是内部类的方法");
        }
        //获得外部类的私有属性,私有方法
        public void getId(){

            System.out.println(id);
        }
    }
}

public class Application{
    public static void main(String[] args) {
        //通过new关键字
        Outer outer = new Outer();
        Outer.Inner inner = outer.new Inner();



    }
}
public class Test {
    public static void main(String[] args) {
        //没有名字初始化类,不用将实例保存到变量中
        new Apple().eat();
    }

}
class Apple{
    public void eat(){
        System.out.println("1");
    }
}

复习笔记的参考资料来自B站UP主:狂神说

posted @ 2020-12-28 14:56  Godwin_Zhang  阅读(38)  评论(0编辑  收藏  举报