JAVA的知識儲備升級
Day1 面向物件之多型
1.0 多型的格式

2.0多型中成員變數的使用特點

public class FU {
int num=10;
public void meth()
{
System.out.println(num);
}
}
public class ZI extends FU{ int num=20; @Override public void meth() { System.out.println(num); } }
public class Main {
public static void main(String[] args) {
FU fu=new ZI();
System.out.println(fu.num); //10;
fu.meth();//20
}
}
3.0 多型中成員方法的使用特點

public class FU {
public void meth1()
{
System.out.println("AAA");
}
public void methfu()
{
System.out.println("父類特有方法!");
}
}
public class ZI extends FU{
public void methzi()
{
System.out.println("子類特有方法!" );
}
}
public class Main {
public static void main(String[] args) {
FU fu=new ZI();
//fu.methzi() 編譯看左邊 父類沒有methzi()
fu.methfu();// 執行看右邊 沒有則向上找
fu.meth1();
}
}
4.0 物件的向上和向下轉型

public abstract class Animals {
public abstract void eat();
}
public class Cat extends Animals {
@Override
public void eat() {
System.out.println("貓吃魚");
}
public void catchmouse()
{
System.out.println("貓捉老鼠");
}
}
public class Main {
public static void main(String[] args) {
Animals animal=new Cat();
animal.eat();
//animal.catchmouse();//編譯看左邊 父類無此方法
//向下轉型
Cat cat=(Cat)animal;
cat.catchmouse();
}
}
列印結果:
貓吃魚
貓捉老鼠
5.0 筆記本USB介面案例 實作

public interface USB {
public abstract void opendevice();
public abstract void offdevice();
}
public class Computer {
public void open()
{
System.out.println("電腦開機");
}
public void off()
{
System.out.println("電腦關機");
}
public void opendevices(USB usb)
{
usb.opendevice();
if(usb instanceof Keyboard)
{
Keyboard keyboard=(Keyboard)usb;
keyboard.type();
}
else if(usb instanceof Mouse)
{
Mouse mouse=(Mouse) usb;
((Mouse) usb).click();
}
usb.offdevice();
}
}
public class Keyboard implements USB{
@Override
public void opendevice() {
System.out.println("打開鍵盤");
}
@Override
public void offdevice() {
System.out.println("關閉鍵盤");
}
public void type()
{
System.out.println("鍵盤輸入");
}
}
public class Mouse implements USB{
@Override
public void opendevice() {
System.out.println("打開滑鼠");
}
@Override
public void offdevice() {
System.out.println("關倍訓鼠");
}
public void click()
{
System.out.println("滑鼠點擊");
}
}
public class Main {
public static void main(String[] args) {
Computer com=new Computer();
com.open();
//準備一個滑鼠,供電腦使用
//Mouse mouse=new Mouse();
//USB usb=mouse;//向上轉型
USB usb=new Mouse();//多型做法
com.opendevices(usb);
Keyboard keyboard=new Keyboard();//沒使用向上轉型 這里可以理解為自動轉型 由小范圍到大范圍
com.opendevices(keyboard);
//com.opendevices(new Keyboard())
com.off();
}
}
列印結果:
電腦開機
打開滑鼠
滑鼠點擊
關倍訓鼠
打開鍵盤
鍵盤輸入
關閉鍵盤
電腦關機
Day2 final關鍵字
1.0 final關鍵字概念與四種用法

2.0 final修飾一個類

3.0 final修飾一個區域變數
public class People {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public People(String name) {
this.name = name;
}
public People()
{}
}
public class FinalMain {
public static void main(String[] args) {
int num1=10;
System.out.println(num1);
num1=20;
System.out.println(num1);
final int num2=30;
//num2=40
//num2=30
System.out.println(num2);
final int num3;
num3=40 ;//正確方法!
System.out.println(num3);
People people1=new People("金泰亨");
System.out.println(people1);//地址
people1=new People("田柾國");
System.out.println(people1);
people1.setName("樸智旻");//內容可以改變 對參考型別來說不可改變的是地址
}
}
列印結果:
10
20
30
40
People@50cbc42f
People@75412c2f
4.0 final修飾成員變數

public class Finaldemo {
private final String name;
//通過構造方法賦值
public Finaldemo() {
name="徐穗珍";
}
public Finaldemo(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
Day3 內部類
1.0 內部類的概念、分類以及定義

2.0 內部類的使用

public class Outer {//間接方式
class Inner{
public void methodinner()
{
System.out.println("內部方法執行!");
}
}
public void methodouter()
{
System.out.println("外部方法執行!");
new Inner().methodinner();
}
}
public class Main {
public static void main(String[] args) {
Outer outer=new Outer();
outer.methodouter();
}
}
直接方式
public class Outer {
class Inner{
public void methodinner()
{
System.out.println("內部方法執行!");
}
}
public void methodouter()
{
System.out.println("外部方法執行!");
}
}
public class Main {
public static void main(String[] args) {
Outer.Inner inner=new Outer().new Inner();
inner.methodinner();
}
}
列印結果:
內部方法執行!
3.0 內部類的同名變數的訪問
public class Outer {
int num=10;
class Inner {
int num=20;
public void method()
{
int num=30;
System.out.println(num);//30
System.out.println(this.num);//20
System.out.println(Outer.this.num);//10
}
}
}
4.0 區域內部類的定義
public class Outer {
public void methodOuter()
{
class Inner
{
int num=10;
public void metehod()
{
System.out.println(num);
}
}
Inner inner=new Inner();
inner.metehod();
}
}
public class Main {
public static void main(String[] args) {
Outer outer=new Outer();
outer.methodOuter();
}
}
列印結果:
10
5.0 區域內部類的final問題

6.0 匿名內部類
1)使用
public interface Interface {
public abstract void method();
}
public class Main {
public static void main(String[] args) {
Interface impl=new Interface() {
@Override
public void method() {
System.out.println("介面覆寫重寫方法執行");
}
};
impl.method();
}
}
列印結果:
介面覆寫重寫方法執行
2)注意事項

7.0 類作為成員變數
public class Weapon {
private String device;
public Weapon() {
}
public Weapon(String device) {
this.device = device;
}
public String getDevice() {
return device;
}
public void setDevice(String device) {
this.device = device;
}
}
public class Hero {
private String name;
private int age;
private Weapon weapon;
public Hero() {
}
public Hero(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String Name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Weapon getWeapon() {
return weapon;
}
public void setWeapon(Weapon weapon) {
this.weapon = weapon;
}
public void crack()
{
System.out.println(getAge()+" "+getName()+" 使出了"+weapon.getDevice());
}
}
public class Main {
public static void main(String[] args) {
Hero hero=new Hero("妲己",18);
Weapon weapon=new Weapon();
weapon.setDevice("放大招");
hero.setWeapon(weapon);
hero.crack();
}
}
列印結果:
18 妲己 使出了放大招
8.0 使用介面作為成員變數
public interface Skill {
public abstract void device();
}
public class Interfaced implements Skill{
@Override
public void device() {
System.out.println("背水一戰");
}
}
public class Hero {
private int age;
private String name;
private Skill skill;
public Hero() {
}
public Hero(int age, String name, Skill skill) {
this.age = age;
this.name = name;
this.skill = skill;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Skill getSkill() {
return skill;
}
public void setSkill(Skill skill) {
this.skill = skill;
}
public void crack()
{
System.out.print("我是"+getAge()+"歲的"+getName()+"正在放出技能");
skill.device();
}
}
public class Main {
public static void main(String[] args) {
Interfaced impl=new Interfaced();
Hero hero=new Hero();
hero.setName("韓信");
hero.setAge(18);
/*
*第一種創建Skill介面的實作類
* hero.setSkill(impl);
* hero.crack();
* 我是18歲的韓信正在放出技能背水一戰
* */
/*
* 第二種使用匿名內部類
* Skill skill=new Skill() {
@Override
public void device() {
System.out.println("背水一戰");
}
};
* hero.setSkill(skill);
* hero.crack();//我是18歲的韓信正在放出技能背水一戰
* */
/*第三種使用匿名物件 匿名內部類*/
hero.setSkill(new Skill() {
@Override
public void device() {
System.out.println("背水一戰");
}
});
hero.crack();//我是18歲的韓信正在放出技能背水一戰
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/175699.html
標籤:Java
下一篇:微服務平臺技術架構
