知识点
抽象类 abstract
所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
抽象类必须被继承,才能被使用。
一个类只能继承一个抽象类,而一个类却可以实现多个接口。
- 使用extends来继承一个抽象类
- 如果继承一个抽象类 就必须实现抽象类里面的抽象方法
- 如果不实现抽象方法,也可以把这个类定义为抽象类
接口 interface
定义一套方法 用于对象之间的通信
- 不要把接口理解为某一个物理存在的东西 VGA TpeC
- 接口就是定义一套规则/规范
- 接口里面默认变量都是 static final 常量
- 默认情况下不需要自己写public static final
- 不能定义变量
- 不能定义代码块
- 不能定义构造方法
- 不能添加普通/对象/实例方法
- 只有抽象方法
- 默认就是public abstract
- 如果需要定义已经有实现的方法 使用default
- 可以定义内部类
- 使用implements实现一个接口
- 一个类可以实现多个接口
- 一个接口可以继承多个接口
技术的使用
抽象类
abstract class BaseAndroidStudy{
//定义一个代码块
{
System.out.println("锻炼身体");
}
//定义一个属性 用于保存数据
public String javaBook;
public Dream dream;
public BaseAndroidStudy(String javaBook,String dream){
this.javaBook = javaBook;
this.dream = new Dream();
this.dream.name = dream;
}
//定义一个静态的常量
public final String CBOOK = "C premier";
//定义一个抽象方法 不需要实现 子类来实现
public abstract void studyC();
//定义一个普通方法 已经确定了这个方法的具体实现
public void studyJava(){
System.out.println("参加东哥的Java培训班");
}
//定义一个内部类用于管理每个人的梦想
class Dream{
public String name;
public void show(){
System.out.println("我的梦想是:"+name);
}
}
}
class Student extends BaseAndroidStudy{
String name;
@Override
public void studyC() {
System.out.println("看书 看视频");
}
public Student(String name,String bookName,String dream){
super(bookName,dream);
this.name = name;
}
}
接口
interface testInterface{
int I = 100;
int COUNT = 20;
void test();
class inner{
int name;
public void show(){
System.out.println("内部类");
}
}
}interface testInterface1{
int I = 100;
int COUNT = 20;
void test1();
class inner{
int name;
public void show(){
System.out.println("内部类");
}
}
}
class LYClass implements testInterface,testInterface1{
@Override
public void test() {
}@Override
public void test1() {
}
}
class Te{
public static void main(String[] args){
LYClass ly = new LYClass();
testInterface t = new LYClass();
}
}
技术的实际使用
按钮的模拟
例子
public class Main {
public static void main(String[] args){
MainActivity main = new MainActivity();
main.touch();
}
}
public class MainActivity extends Activity implements View.onClickListenner{
Button btn;
ImageView img;
@Override
public void onCreate() {
btn = new Button("HelloWorld","red");
img = new ImageView("胡歌");
add(btn);
add(img);
btn.listenner = new View.onClickListenner() {
@Override
public void onClick(View v) {
System.out.println("按钮被点击了");
}
};
img.listenner = new View.onClickListenner() {
@Override
public void onClick(View v) {
System.out.println("图片被点击了");
}
};
}
@Override
public void onDestory() {
}
@Override
public void onClick(View v) {
}
public void touch(){
btn.getTouchEvent();
img.getTouchEvent();
}
}
public ArrayList<View> chlids = new ArrayList<>();
public abstract void onCreate();
public abstract void onDestory();
public void add(View v) {
if (v instanceof Button) {
Button b = (Button) v;
System.out.println(b.title+"的按钮显示到界面上");
}
if (v instanceof ImageView) {
ImageView i = (ImageView) v;
System.out.println(i.picture+"的图片显示到界面上");
}
chlids.add(v);
}
}
public class Button extends View {
String title;
String titleColor;
public Button(String title,String titleColor){
this.title = title;
this.titleColor = titleColor;
}
}
public class ImageView extends View {
String picture;
public ImageView(String picture){
this.picture = picture;
}
}
public class View {
String backgroundColor;
String borderColor;
onClickListenner listenner;
public interface onClickListenner{
void onClick(View v);
}
public void getTouchEvent(){
listenner.onClick(this);
}
}
随笔
感觉自己现在处于一种懂与不懂的中间状态,demo的要求发下来,往往很快就有了思路。但是写完之后,当个讲的时候,又和他的有很多不同,看完可以发现自己有很多不足。然而发现了自己的不足也弥补不了,也许这个demo是懂了,但demo的多种多样,下一个demo会暴露自己的许多缺点。这种学习了,却没有进一步的感觉是真的让人不爽。