面向对象

1.三大特征:

封装:把数据封装起来,不让外部随便访问

多态:同一事件可以有多种做法

继承:我们都是动物,我们有血有肉,有共同点

2.类和对象的区别

类是模板,如人类,狗;

对象是类的具体实例

3.权限

public :该项目中所有类均可使用

protected:只能同一个包的类调用,其他包的类使用必须是其子类

private :仅供该类使用,实现了封装

default(默认):只有在同一个包中使用

4.类包括

属性 如名字,年龄等

行为 如吃东西,跑步等

构造函数

5.类的定义

class 类名{

 void 方法名(参数){

      方法体;

 }

}

6.内部类

使用内部类的好处是:更好的封装,可以访问外部类变量

创建内部类的实例:

A a=new A();

A.B b=a.new B();

Inner classes(普通内部类) :

可以使用private public protected 修饰(如果使用public可以通过外部类访问内

部类)

形式:



class  Out{

     class Inner{

     }

}

Method local Inner classes(方法局部内部类):定义在方法里面

形式:


class Out{

     public void run(){

           class Inner{

           }

     }

}

AnonymousInner classes:匿名内部类


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.静态static

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。

只要这个类被加载,就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

8.final常量

final 加到变量上,就成为常量

final加到方法前,这个方法就不能被子类覆盖(override)

final加到类前,表示这个类不能被继承

9.数据访问器 get() set()

如果要访问类中私有变量则使用数据访问器。

10.instanceof 以及向上转型

instanceof运算符是用来在运行时指出对象是否是特定类的一个实例,返回值为Boolean

向上转型 A b=new B();
B是A的子类,A中的A1()方法被B子类的A1()方法所覆盖,而B子类中的A2()方法则失效。(通俗的讲就是创建一个A的子类B,然后将B强转成A,b只能使用A中的方法,但已经被覆盖。)

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("现在来比赛的是"+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(抽象)

一个类是abstract类则不能被实例化,如果一个类不是abstract类则不能有abstract方法。
abstract类的方法通常是abstract类。
将abstract加在方法前面则变成抽象方法。
如果继承了次抽象类,则子类必须实现父的抽象方法。


public abstract class A {
    abstract void aa();
    abstract void cc();
    abstract void dd();

}

2.interface(接口)

接口里面字段是final型的 方法是abstract
default:实现接口方法

public interface Eat(){
    void eatChineseFood();
    default void eatWestFood(){
        System.out.println("还挺不错");
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容