读程序啥的肯定没有任何问题,那就写点语法吧!
- 几个专业术语:
-
类: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();
}
}