知識點
抽象類 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會暴露自己的許多缺點。這種學習了,卻沒有進一步的感覺是真的讓人不爽。