12月30日 面向對象04------類的練習、包

//類 抽象類 接口的案例
/*
有足球運動員和籃球運動員
    足球教練和籃球教練
爲了出國交流 跟足球相關的人員都需要學習英語
*/


abstract class People
{
abstract void eat();
}
//創建一個運動員類
//屬性:姓名 年齡
//功能:比賽 訓練 喫飯


abstract class SportMan
{
String name;
int age;
public void eat()
{
System.out.println("喫飯");
}
abstract void train();
abstract void match();
abstract void show();
}
//創建一個教練類
//屬性:姓名 年齡
//功能:教學 喫飯
abstract class Coach
{
String name;
int age;
public void eat()
{
System.out.println("喫飯");
}
abstract void teach();
abstract void show();
}




//創建一個學英語的接口
interface StudyEnglish
{
public abstract void study();
}


//足球運動員類
class FootballPlayer extends SportMan implements StudyEnglish
{

public void train()
{
System.out.println("射門訓練");
}
public void match()
{
System.out.println("中超聯賽");
}
public void show()
{
System.out.println("這是一名足球運動員,他的名字叫:"+this.name+
",他今年"+this.age+"歲。");
}
public void study()
{
System.out.println("運動員學英語");
}
}


//籃球運動員類
class BasketballPlayer extends SportMan
{
public void train()
{
System.out.println("投籃訓練");
}
public void match()
{
System.out.println("NBA");
}
public void show()
{
System.out.println("這是一名籃球運動員,他的名字叫:"+this.name+
",他今年"+this.age+"歲。");
}


}


//足球教練
class FootBallCoach extends Coach implements StudyEnglish
{
public void teach()
{
System.out.println("教人踢球");
}
public void show()
{
System.out.println("這是一名足球教練,他的名字叫:"+this.name+
",他今年"+this.age+"歲。");
}
public void study()
{
System.out.println("教練在學英語");
}
}


//籃球教練
class BasketBallCoach extends Coach
{
public void teach()
{
System.out.println("教人投籃");
}
public void show()
{
System.out.println("這是一名籃球教練,他的名字叫:"+this.name+
",他今年"+this.age+"歲。");
}
}






//測試類
public class FuZiDemo
{
public static void main(String[] args)
{
SportMan sport = new FootballPlayer();
FootballPlayer fbp = (FootballPlayer)sport;
fbp.name = "楊旭";
fbp.age = 27;
fbp.show();
fbp.train();
}
}




形參和返回值的問題


形參:
基本類型
引用類型:
  類:(匿名對象) 需要的是一個該類的對象


  抽象類:需要的是該抽象類的子類對象
  abstract class Person
{
abstract void study();
}


class Student extends Person
{
void study()
{
System.out.println("OK");
}
}


class PersonDemo
{
public void method(Person p)
{
p.study();
}
}


public class FuZiDemo
{
public static void main(String[] args)
{
PersonDemo pd = new PersonDemo();
Person p = new Student();
pd.method(p);
}
}
 


 接口:需要的是該接口實現類的對象
interface Love
{
abstract void love();
}


class LoveDemo 
{
public void method(Love l)
{
l.love();
}
}


class Person implements Love
{
public void love()
{
System.out.println("love love love");
}
}


public class FuZiDemo
{
public static void main(String[] args)
{
LoveDemo ld = new LoveDemo();
Love l = new Person();
ld.method(l);
}
}




返回值類型
  基本類型:
  引用類型:
      類 
      抽象類:返回的是該抽象類的子類對象
      接口:返回的是該接口實現類的對象




鏈式編程:每次調用完畢後,返回的是一個對象




包:其實就是文件夾
 作用:
    把相同的類名放到不同的包中
    對類進行分類管理
按照模塊和功能分


package 包名;
爲程序的第一條可執行代碼
只能有一個package語句


帶包的編譯和運行
A 手動式:
   a.編寫帶包的java文件
   b。通過javac編譯
   c.手動創建包名
   d。將b中的class文件放在c目錄的最底層
java cn.ysck.HelloWorld


B 自動式
  javac -d . *.java


不同包下的類之間的訪問:
導包:import 
import 包名.類名;


package class import之間的順序:
package(只能有一個) > import(可以有多個) > class(可以有多個,但是建議只一個)




權限修飾符
              本類       同一個包       不同的包下(子類)   不同的包下(無關類)
private        Y                                                                 
默認           Y           Y                                                         
protected      Y           Y                Y                                     
public         Y           Y                Y                     Y                  




類及其組成所常用的修飾符


用於修飾類:public final abstract
成員變量:private protected public static final
構造方法:public protected private
成員方法:private protected public static final abstract
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章