java笔记篇:包、final关键字、常量、抽象类、接口、内部类,都是一些零碎的知识,所以写一篇记录一下,偶尔翻出来看看�?

�? final 常量

权限修饰�?&&代码�?

关于静态代码块实现数据的初始化,我在前面写的学生信息管理系统中添加一个不需要注册的管理员信息来实现;改写前App.java代码

改写后App.java代码�?

那么我们运行尝试一下初始化添加的管理员信息是否有效

抽象类和抽象方法

抽象类和抽象方法的定义方�?

public abstract class Animal {
    public abstract void eat();
}

//代码我就直接写在一个文件里面了,看起来方便一�?
public class App {
    public static void main(String[] args) {
        Dog d = new Dog("大黄",3);
        d.eat();
        d.drink();

        Sheep s = new Sheep("小黄",2);
        s.eat();
        s.drink();
    }
}
abstract class Animal {
    String name;
    int age;

    public Animal() {
    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public abstract void eat();
    public void drink(){
        System.out.println("喝水");
    }
}

class Dog extends Animal {

    public Dog() {
    }

    public Dog(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("吃骨�?");
    }
}
class Frog extends Animal{


    public Frog() {
    }

    public Frog(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("吃虫�?");
    }
}
class Sheep extends Animal{

    public Sheep() {
    }

    public Sheep(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("吃草");
    }
}

接口

接口的练�?

这里我直接用上面的代码修改了一下,意思是一样的

public class App {
    public static void main(String[] args) {
        Dog d = new Dog("大黄",3);
        d.eat();
        d.swim();//输出狗刨

        Frog f = new Frog("小青�?",1);
        f.eat();
        f.swim();//输出蛙泳

        Sheep s = new Sheep("小黄",2);
        s.eat();
        s.swim(); //这里因为sheep类没有调用swim接口,所以报�?
    }
}
abstract class Animal {
    String name;
    int age;

    public Animal() {
    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public abstract void eat();
}

class Dog extends Animal implements swim {

    public Dog() {
    }

    public Dog(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("吃骨�?");
    }

    @Override
    public void swim() {
        System.out.println("狗刨");
    }
}

class Frog extends Animal implements swim{


    public Frog() {
    }

    public Frog(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("吃虫�?");
    }

    @Override
    public void swim() {
        System.out.println("蛙泳");
    }
}

class Sheep extends Animal{

    public Sheep() {
    }

    public Sheep(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("吃草");
    }
}

//游泳的接�?
interface swim{
    public abstract void swim();
}

接口的特�?

通过Java内存分析工具可以清晰看到

接口和类的关�?

接口新增的方�?

0x01版本新增历史

0x02默认方法

0x02静态方�?

0x03私有方法

接口的应�?

适配器设计模�?

综合练习

这道题重要的是继承的路线,如果你规划的好,会省去很多麻烦

代码就不写了,思路如下

成员内部�?

成员内部类代码如何书�?

如何创建成员内部类对�?

成员内部类如何获取外部类的成员变�?

静态内部类

字面意思,用static修饰的内部类

局部内部类

定义在方法里的类就叫做局部内部类,局部内部类用处不到,了解一下即�?

匿名内部�?