19.10.22
今日份学习知识点
用关键字 abstract 修饰的方法称为 abstract 方法(抽象方法)
对于抽象方法,只允许声明,不允许实现,而且不允许使用 final 和 abstract 同时修饰一个方法
抽象方法(以下简称抽方)必在抽象类(以下简称抽类)中
抽类不能实例化
抽类中可以没有抽方
抽类只能被继承
抽类的子类必实现其所有抽方,否则仍未抽类
————————————————————
接口:比抽类更抽象(完全抽)
即,抽类中所有方法都抽
则可以用接口来定义
—————————
接口中的变量(属性)默认 public static final,即,全局常量
接口中的方法(函数)默认 public abstract,即,抽方
注:public 是不可少的,子类继承时要注意访问修饰符用 public
—————————————————————————
接口可以继承接口
接口用 public 修饰或省略
类 implements 接口
接口 extends 接口
若同时有
如Dog extends LandAnimal implements Animal
extends 必在 implements 之前
即,先继承再实现
接口的属性(变量)可以直接访问,(接口中只有常量,这里的变量也是常量)
———————————————————————
包:通常用来放功能相同的类
用包后,麻烦
dos中,编译时:javac -d __
运行时:java -cphenu.rjxy.__(加上包名)
cp:类路径
系统环境变量 classpath 指定目录
现在用eclipse方便多了
Export 打包,JAR file 导架包(只导一个 .java 也可以)
JRE 中有好多 jar
引 jar ,Build Path ,Add External Archives
import 导入包
删除导入的包:BP cf Libraries Remove (BP Bulid Path)
若想同时导入有关联的几个包:
BP Add Libraries UserLibraries
New UL name
A.EJAR,注:这只是个命名,看自己
import 时,交代清楚,不能用 *https://jingyan.baidu.com/article/ca41422fc76c4a1eae99ed9f.html----Eclipse中导入外部jar包
注:具体图片在下
ClassPractice(课堂练习)
cp1 抽象类
Animal.java
package cp1;
public abstract class Animal { //抽象类不能被实例化,只能被继承
//1.定义抽象方法,抽象方法必须在抽象类中,抽象类中可以没有抽象方法
abstract void shout();
}
Dog.java
package cp1;
public class Dog extends Animal {
//继承抽象类的子类必须将抽象类中所有的抽象方法都实现,否则该子类仍然是抽象类
@Override //重写(实现)父类中的抽象方法shout()
public void shout() {
// TODO Auto-generated method stub
System.out.println("dog shout!");
}
}
Test1.java (测试类)
package cp1;
public class Test1 {
public static void main(String[] args) {
Dog dog = new Dog();
dog.shout();
}
}
运行结果:
cp2 接口
Animal.java
package cp2;
//1.接口,是完全抽象的类的另一种表示形式,即所有方法都是抽象的
public interface Animal {
//2.接口中所有变量(属性)默认的修饰“public static final”,即常量(全局变量)
String LIFESTYLE = "alive"; //5.常量一般全大写字母
//3.接口中所有方法(函数)默认的修饰“public abstract”,即抽象方法
void shout();
void sleep();
void eat();
void run();
}
//4.接口可以继承接口
Dog.java
package cp2;
public class Dog extends LandAnimal {
//1.完全类必实现接口所有抽象方法
@Override
public void shout() {
// TODO Auto-generated method stub
System.out.println("Dog shout");
}
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("Dog eat");
}
}
//2.若是类同时继承和实现接口,extends必在implements之前
//例如:Dog extends LandAnimal implements Animal
//即,先继承再实现
//注释里的每个“必”字都是指当前知识范围内,外面世界太大太大了。。。
LandAnimal.java
package cp2;
public abstract class LandAnimal implements Animal { //没有实现所有抽象方法,所以LandAnimal仍是抽象类
public void sleep() {
System.out.println("sleep onland");
}
public void run() {
System.out.println("run onland");
} //实现了两个方法
}
Test2.java(测试类)
package cp2;
public class Test2 {
//测试类
public static void main(String[] args) {
// TODO Auto-generated method stub
Dog dog = new Dog();
dog.eat();
dog.shout();
dog.sleep();
dog.run();
System.out.println(Animal.LIFESTYLE); //接口的属性可以直接访问
}
}
运行结果:
导架包
Export 打包,JAR file 导架包(只导一个 .java 也可以)
桌面上多了个这个
引 jar ,Build Path ,Add External Archives
删除导入的包:BP cf Libraries Remove (BP Bulid Path)
打住,我电脑上的 eclipse 直接 Remove 就行了。。。
若想同时导入有关联的几个包:
BP Add Libraries UserLibraries
New UL name
A.EJAR,注:这只是个命名,看自己
https://jingyan.baidu.com/article/ca41422fc76c4a1eae99ed9f.html----Eclipse中导入外部jar包