1.三大特征:
封裝:把數(shù)據(jù)封裝起來,不讓外部隨便訪問
多態(tài):同一事件可以有多種做法
繼承:我們都是動(dòng)物剩盒,我們有血有肉呆瞻,有共同點(diǎn)
2.類和對象的區(qū)別
類是模板滞造,如人類,狗栋烤;
對象是類的具體實(shí)例
3.權(quán)限
public :該項(xiàng)目中所有類均可使用
protected:只能同一個(gè)包的類調(diào)用谒养,其他包的類使用必須是其子類
private :僅供該類使用,實(shí)現(xiàn)了封裝
default(默認(rèn)):只有在同一個(gè)包中使用
4.類包括
屬性 如名字明郭,年齡等
行為 如吃東西买窟,跑步等
構(gòu)造函數(shù)
5.類的定義
class 類名{
void 方法名(參數(shù)){
方法體;
}
}
6.內(nèi)部類
使用內(nèi)部類的好處是:更好的封裝,可以訪問外部類變量
創(chuàng)建內(nèi)部類的實(shí)例:
A a=new A();
A.B b=a.new B();
Inner classes(普通內(nèi)部類) :
可以使用private public protected 修飾(如果使用public可以通過外部類訪問內(nèi)
部類)
形式:
class Out{
class Inner{
}
}
Method local Inner classes(方法局部內(nèi)部類):定義在方法里面
形式:
class Out{
public void run(){
class Inner{
}
}
}
AnonymousInner classes:匿名內(nèi)部類
interface class Food{
void beEat();
}
public class Cat{
public void eat(Food food){
food.beEat();
}
public static void main(String args[]){
Cat cat=new Cat();
Food food = new Food() {
@Override
public void beEat() {
// TODO Auto-generated method stub
System.out.println("我被吃了");
}
};
cat.eat(food);
}
}
7.靜態(tài)static
被static修飾的成員變量和成員方法獨(dú)立于該類的任何對象薯定。也就是說始绍,它不依賴類特定的實(shí)例,被類的所有實(shí)例共享话侄。
只要這個(gè)類被加載亏推,就能根據(jù)類名在運(yùn)行時(shí)數(shù)據(jù)區(qū)的方法區(qū)內(nèi)定找到他們学赛。因此,static對象可以在它的任何對象創(chuàng)建之前訪問吞杭,無需引用任何對象盏浇。
8.final常量
final 加到變量上,就成為常量
final加到方法前芽狗,這個(gè)方法就不能被子類覆蓋(override)
final加到類前绢掰,表示這個(gè)類不能被繼承
9.數(shù)據(jù)訪問器 get() set()
如果要訪問類中私有變量則使用數(shù)據(jù)訪問器。
10.instanceof 以及向上轉(zhuǎn)型
instanceof運(yùn)算符是用來在運(yùn)行時(shí)指出對象是否是特定類的一個(gè)實(shí)例童擎,返回值為Boolean
向上轉(zhuǎn)型 A b=new B();
B是A的子類滴劲,A中的A1()方法被B子類的A1()方法所覆蓋,而B子類中的A2()方法則失效。(通俗的講就是創(chuàng)建一個(gè)A的子類B顾复,然后將B強(qiáng)轉(zhuǎn)成A班挖,b只能使用A中的方法,但已經(jīng)被覆蓋芯砸。)
public class Test {
public static void main(String ar[]){
Dog dog=new Dog("哈士奇");
Cat cat=new Cat("加菲貓");
runRunKan(dog);
runRunKan(cat);
}
public static void runRunKan(Animal animal){
System.out.println("==================");
System.out.println("現(xiàn)在來比賽的是"+animal.name);
animal.run();
System.out.println(animal.name+"的成績是"+Math.random());
if(animal instanceof Dog){
System.out.println("這是一條狗");
Dog d=(Dog)animal;
d.bite();
}else if(animal instanceof Cat){
System.out.println("這是一條貓");
Cat c=(Cat)animal;
c.catchMouse();
}
}
}
Dog以及Cat類繼承與Animal類
1.abstract(抽象)
一個(gè)類是abstract類則不能被實(shí)例化聪姿,如果一個(gè)類不是abstract類則不能有abstract方法。
abstract類的方法通常是abstract類乙嘀。
將abstract加在方法前面則變成抽象方法末购。
如果繼承了次抽象類,則子類必須實(shí)現(xiàn)父的抽象方法虎谢。
public abstract class A {
abstract void aa();
abstract void cc();
abstract void dd();
}
2.interface(接口)
接口里面字段是final型的 方法是abstract
default:實(shí)現(xiàn)接口方法
public interface Eat(){
void eatChineseFood();
default void eatWestFood(){
System.out.println("還挺不錯(cuò)");
}
}