AP CS A 知识点整理

读程序啥的肯定没有任何问题,那就写点语法吧!

  1. 几个专业术语:
  • 类:class(类似于 C++ 中的 namespace,但是也有许多不同点)

  • 包:类的集合(我的理解)

  • 对象(在类中)

    • 属性:相当于变量

    • 方法:相当于函数

  • 接口:下文具体讲

变量定义:

int a;
double a;
String a;
int[] a;
double[] a;
...

public/private/protected/default 区别:

  • public: 在任何包和类中均可使用

  • private:被其修饰的类、属性以及方法只能被该类的对象访问(甚至不可以被子代访问)

  • protected:被其修饰的类、属性以及方法只能被类本身的方法及子类访问(不同包里的子类也可以访问)

  • defaulted(什么都不写):只能在同一包下使用

继承与多态:

  • 继承(extends):

    • java不支持多继承
    • class A extends B: A是B的子类
    • 子类能查看除 private 外所有父类的对象,但父类不能查看任何子类对象
  • 多态:

    • 用super即可(但是貌似不考?)

接口(interface):

为了程序规范化而生(看下例子大概就明白了)

interface Walkable {
	public void walk();
}

interface Flyable {
	public void fly();
}

interface Swimmable {
	public void swim();
}

class Animal {
	public void breathe() {
		System.out.println("Animal is breathing");
	}
}

class Dog extends Animal implements Walkable {
	public void walk() {
		System.out.println("Dog is walking");
	}
	
	public void breathe() {
		super.breathe();
		System.out.println("Dog is breathing");
	}
}

class Cat extends Animal implements Walkable {
	public void walk() {
		System.out.println("Cat is walking");
	}
}

class Fish extends Animal implements Swimmable {
	public void swim() {
		System.out.println("Fish is swimming");
	}
}

class Bird extends Animal implements Walkable, Flyable {
	public void fly() {
		System.out.println("Bird is flying!");
	}
	
	public void walk() {
		System.out.println("Bird is walking!");
	}
}

class Test {
	static void makeAnimalWalk(Animal animal) {
		if (animal instanceof Walkable) {    //animal 有 Walkable 这个接口
			((Walkable) animal).walk();
		} else {
			System.out.println("Error: FU");
		}
	}
	
	public static void main(String[] args) {
		makeAnimalWalk(new Cat());
		makeAnimalWalk(new Dog());
		makeAnimalWalk(new Bird());
		Flyable flyableAnimal = new Bird();
		flyableAnimal.fly();
		Animal someFUAnimal = new Dog();
		someFUAnimal.breathe();
	}
}
posted @ 2022-04-07 00:17  孙宇煊  阅读(88)  评论(0编辑  收藏  举报