说了开始复习基础了,虽然以前也做过笔记,而且现在属于复习,在考虑是否还要写笔记包括blog是否要写这些东西,想了好久,还是写写吧,不然一天干了什么都不知道..
抽象类
public abstract class Animal { private int age; public void setAge(int age){ this.age=age; } public int getAge(){ return age; } public abstract void eat(); }
public class Person extends Animal { private String name; public void setName(String name){ this.name=name; } public String getName(){ return name; } public void eat(){ //重写方法 System.out.println("洗手--做饭--吃饭--收拾"); } }
public class Test { public static void main(String[] args){ Animal a=new Person();//正确 //Animal a=new Animal(); 错误 a.setAge(2); a.eat(); } }
抽象类主要是通过继承、再由其子类发挥作用的,其中作用包括两方面:
其他特性:
接口
public interface Runner { public static final int id=1; public abstract void start(); public abstract void run(); public abstract void stop(); }
public interface Runner { public static final int id=1; public abstract void start(); public abstract void run(); public abstract void stop(); }
等价于------------------------------------------------->
public interface Runner { int id=1; void start(); void run(); void stop(); }
[<modifier>] class <name> [extends <superclass>] [implements <interface> [,<interface>]*]{ declarations>* }
public class Person implements Runner { public void start(){ System.out.println("弯腰,准备,开跑"); } public void run(){ System.out.println("加速冲向终点"); } public void stop(){ System.out.println("胜利,休息"); } }
public class Test { public static void main(String[] args){ Runner r=new Person(); r.start(); r.run(); r.stop(); } }
interface Runner{ public void run(); }
interface Swimmer{ public void swim(); }
abstract class Animal{ public abstract void eat(); }
class Person extends Animal implements Runner,Swimmer { public void run(){ System.out.println("I am runing"); } public void swim(){ System.out.println("I am Swimming"); } public void eat(){ System.out.println("I am eating"); } }
public class Test{ public static void main(String[] args){ Test t=new Test(); Person p=new Person(); t.m1(p); t.m2(p); t.m3(p); } public void m1(Runner f){ f.run(); } public void m2(Swimmer s){ s.swim(); } public void m3(Animal a){ a.eat(); } }
输出结果:
I am running
I am swimming
I am eating
接口间的继承
interface A{ public void ma(); } interface B{ public int mb(int i) } interface C extends A,B{ public String mc(); } class D implements C{ public void ma(){ System.out.println("Implements method ma()"); } public int mb(int i){ return 2000+i; } public String mc(){ return "Hello"; } }
接口特性总结
嵌套类
java语言支持类的嵌套定义,即允许将一个类定义在其他类的内部,其中内层的类被称为嵌套类(Nested Class)
嵌套类可以分为两种:
public class A{ ... private class B{ //内部类 ... } public static class C{ //静态嵌套类 ... } }
内部类又可分为三种情况:
public class A{ private int s; private class B{ public void mb(){ s=100; System.out.println("在内部类B中S="+s); } } public void ma(){ B i=new B() i.mb(); } }
public class TestInner{ public static void main(String[] args){ A o=new A(); o.ma(); } }
public class A{ private int s; private class B{ public void mb(){ System.out.println(s); } } }
public class TestInner2{ public static void main(String[] args){ A a=new A(); //创建一个依赖于a而存在的b A.B b=a.new B(); b.mb(); } }
class A{ private int s=111; private class B{ private int s=222; public void mb(int s){ System.out.println(s);//局部变量s System.out.println(this.s);//内部类对象的属性s System.out.println(A.this.s);//外层类对象属性s } } }
public class TestInner3{ public static void main(String[] args){ A a=new A(); A.B b=a.new B(); b.mb(333); } }
枚举类型
public enum Week{ Mon,Tue,Wed,Thu,Fri,Sat,Sun }
public class TestEnum{ public static void main(String[] args){ TestEnum te=new TestEnum(); te.work(Week.Sun); } public void work(Week day){ if(day.equals(Week.Sat)){ System.out.println("shopping"); }else if(day.equals(Week.Sun)){ System.out.println("sleep"); }else{ System.out.println("work"); } } }