• 面向对象


    面向对象程序设计特征

    封装性:对外有限的公开,隐藏细节,模块代码。

    继承性:子类拥有父类全部或部分性质、方法。清晰体现类之间的层次关系。

    多态性:方法重载,成员覆写。

    类是事物的描述,对象是具体的事物。例如:汽车设计图和汽车。汽车设计图就是类,汽车是对象。

    class Car

    {

    String color=black; 

    String country=China;

    void show()

    {

    System.out.println(color+","+country);

    }

    }

    内存表现

    对象比较

     “==”是比较对象的地址是否相等,“equals()”是比较内容是否相等。

    非静态内部类不能定义静态成员方法,可定义非静态成员方法,静态内部类可定义非静态、静态成员方法。

    new一个对象初始化内容(一切言语尽在代码中)

    class fu
    {
    	static 
    	{
    		System.out.println("a");
    		
    	}
    	{
    		System.out.println("c");
    	}
    	fu()
    	{
    		System.out.println("d");
    	}
    }
    class zi extends fu
    {
    	static
    	{
    		System.out.println("b");
    	}
    	{
    		System.out.println("e");
    	}
    	zi()
    	{
    		System.out.println("f");
    	}
    }
    class fuzi
    {
    	public static void main(String[] args)
    	{
    		new zi();
    	}
    }



    重载与重写的区别

    重写是子类的方法覆盖父类的方法,要求方法名和参数都相同。
    重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同。



    多态

    class Person
    {
    	void show1()
    	{
    		System.out.println("Person1");
    	}
    	void show2()
    	{
    		System.out.println("Person2");
    	}
    }
    class Student extends Person
    {
    	void show1()
    	{
    		System.out.println("Student1");
    	}
    	void show3()
    	{
    		System.out.println("Student3");
    	}
    }
    class PersonDemo3
    {
    	public static void main(String[] args)
    	{
    		Person p=new Student();
    		System.out.println(p);
    		Student s=(Student)p;
    		System.out.println(s);
    		s.show3();
    	}
    }

    多态就是创建父类对象用子类实现。

    多态中能用子类覆盖的方法,但不能用父类没有定义的方法。

    Person p=new Student();是向上转型。

    Student s=(Student)p;是向下转型。

    向上转型会有精度损失,向下转型能用到父类中没有定义子类中有的方法。

    s和p指向同一处内存。




    抽象类

    抽象类与和抽象方法必须用abstract修饰。

    抽象不能被直接实例化。

    抽象方法只需要声明,不需要实现。

    子类必须覆盖所有抽象方法才能实例化,否则该类也是抽象类。



    接口

    接口成员数据必须是常量。

    所有方法都是抽象方法。

    接口可以继承多个接口。



  • 相关阅读:
    能自证的任意类型即为动态类型
    类型系统:类型信息引用 isa
    类型系统:类型检查、类型转换、任意类型-强类型、类型转换
    动态类型与弱类型
    Swift Intermediate Language (SIL)
    swift -Dynamic Dispatch
    swift VTables
    Which dispatch method would be used in Swift?
    Which dispatch method would be used in Swift?-Existential Container
    Swift protocol extension method is called instead of method implemented in subclass
  • 原文地址:https://www.cnblogs.com/lisisong/p/5122626.html
Copyright © 2020-2023  润新知