类、多态、抽象、接口小结

什么是类
类是具有相同的属性和方法的一堆对象的集合。

什么是对象
万物皆对象,日常生活中能看到和摸到的东西都是对象。
对象由属性和行为组成
属性是对象所具有的特征,行为是对象可以做的动作

类和对象的关系
类是对象的描述,对象是类的实例
对象的每个属性被表示为类中的一个成员变量
对象的每个行为成为类中的一个方法

什么是构造函数
构造函数是类中的一个特殊方法,该方法在对象实例化时被调用。构造函数的用途是当对象实例化时,初始化对象中的成员变量。

final关键字
1.final 可修饰变量(创建符号常量),该变量在被赋值后不能被改变
2.final 作为可选修饰符修饰一个类(最终类),该类不能被其他类继承(即不能有子类)
3.final 可以修饰一个方法(最终方法),该方法不能被重写(但是可以重载)

static关键字
关键字static可用于修饰方法和属性,不能用于修饰类(特例:内部类除外)
1.static修饰成员变量或方法时,该变量或方法不与所在类的特定实例关联。即通过static声明的成员变量或方法可以被认为是全局的,任何 其他类都 可以直接访问静态成员变量或调用静态方法,不需要该类的一个实例。
2.static修饰某个成员变量时,该变量是单独存放在内存开辟的静态储存区
3.static修饰变量,访问时不需要new(实例化),直接采用”类名.变量名“
4.static修饰变量和方法跟当前类没有直接关联
5.static修饰变量的值不随这类的初始化而初始化,类被加载的时候只初始化一次
6.static修饰的静态方法,在访问外部属性的时候,该外部属性也必须是静态;调用外部方法时,被调用的方法也必须是静态方法

什么是继承?什么时候使用继承?
在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种子类(subClass)继承父类(基类、superClass)并拥有父类的一切方法和属性(不包含父类用pravate修饰的方法和属性)的方式就称为继承。
当两个或多个类是不相同的,但是共享相同特征的时候,将共同的元素从类中拿出来,放到一个父类中。这些类继承父类,因此就继承了所有父类的特征,同时,每个子类又保留了不同的特征。使用继承不仅可以重用已有代码避免代码重复,还可以创建一个更容易维护和修改代码的程序
判断父类和子类的继承关系是否正确,用“is a”

super和this关键字的用法
super关键字:用来调用父类中子类已经重写的方法或者调用父类的构造函数;
this关键字:对象对自身的引用。当在一个类中,引用类本身的成员变量或者方法时,可以显示地使用this引用

父类构造器对子类构造器的影响
关键字super可用于调用父类的构造函数,如果没有显式地使用super关键字,编译器会自动添加一个无参的super();来调用父类的构造函数。但是如果父类中没有无参构造函数,在这种情况下调用super();不会通过编译,此时子类构造函数需要显式地调用父类构造函数,并将恰当的实参传递给父类的构造函数

什么是向上转型
从低精度数据类型向高精度数据类型转换时实行自动转换,这种类型转换技术成为向上转型
向上转型对于引用数据类型同样适用。在父类和子类的继承关系中,沿着子类向父类的向上转型是自动转型。
举例:double d = int 10; Animal a = new Dog();

什么是多态
多态是指一个对象有多种形式的能力。一个类的子类可以定义它们唯一的行为,同时共享父类的某些相同特征(允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式)
静态多态(编译时多态):程序在编译时系统就能决定调用哪个方法 —— 重载
动态多态(运行时多态):程序运行中系统才能动态确定方法所指对象 —— 重写

什么是多态参数
当方法的某个形式参数是一个引用的时候就称为多态参数。与该引用兼容的任何对象都可以传递给方法,从而允许方法接受不同数据类型的形参

intanceof关键字的的使用
判断某个引用对象是否指向某个类

什么是动态绑定
首先“绑定”的概念:将一个方法调用与该方法所在的类关联起来就称为“绑定”
绑定分为静态绑定(前期绑定、编译期绑定)和动态绑定(后期绑定)
静态绑定是指在程序执行前方法已经被绑定,此时由编译器或其他连接程序实现。java中的方法只有final、static、private和构造器是静态绑定
动态绑定是指在运行时根据具体对象的类型进行绑定。java中所有的普通方法,都采用动态绑定技术。通过动态绑定,JVM必须沿着继承层次树向下找,判断一个方法是否被重写。如果方法被重写了,在运行时就执行子类中的方法,而不是编译时调用父类方法

什么是向下转型?怎么用(代码举例)
与向上转型相反,从高精度向低精度数据类型转换称为向下转型
向下转型需要使用强制类型转换符
举例:int a = (int) 11.45; Animal a = new Dog(); Dog d = (Dog) a;

什么是抽象类,什么是抽象方法?关键字是什么
抽象类是从多个具体的类中提取出共性行为放到父类中,这些具体类中不同行为在该抽象类中以抽象方法的形式来定义,在具体的子类中实现。
抽象类是指不能被实例化的类。在抽象类中,类的所有其他功能都存在,成员变量、方法、构造函数都可以用同样的方式访问,只是不能创建抽象类的实例
抽象方法只有方法签名,没有方法体(只声明,不实现)。将一个方法声明为抽象方法有两个结果:1.类也必须声明为抽象类;2.任何子类必须重写抽象方法,除非该子类本身也是抽象的
关键字:abstract

什么是接口
接口是特殊的抽象类,它比抽象类更加抽象。
以下来自百度百科:【Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。包含两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”】

接口和抽象类的区别
1.接口中只能包含抽象方法,而抽象类中可以包含普通方法
2.接口中不能定义静态方法,而抽象类可以定义静态方法
3.接口中只能定义静态常量属性,不能定义普通属性,而抽象类既可以定义普通属性,也可以定义静态常量属性
4.接口不包含构造器,而抽象类中可以包含构造器。抽象类中的构造器并不是用于创建对象,而是让子类调用这些构造器来完成属于抽象类的初始化工作
5.接口中不包含初始化块,而抽象类中可以包含初始化块
6.一个类最多有一个直接父类,包括抽象类,但是一个类可以实现多个接口,通过实现多个接口来弥补java单继承的不足

接口与多态
接口,同重写、重载一样,是多态的一种表现形式(或者说是实现多态技术的重要手段)
以下摘自网络:多态是面向对象编程的特征之一,而接口是一系列方法的声明,是一些方法特征的集合,有特定的语法和结构,这两者根本不是同一类型和层次上的概念。接口毫无疑问可以体现出多态性来,但是多态性未必一定要用接口,只要存在方法的重写、重载与动态连接即可体现多态性(如存在继承关系的类之间),所以,不存在“什么时候用接口什么时候用多态”的问题,程序里写的具体代码只可能是接口,只是这代码可能会体现出多态性而已,两者可以在不同的概念层次上并存,不存在冲突。
简而言之,你可以在程序里用代码定义一个接口,但是你不能定义一个多态,多态只是对你代码特征的一种描述,一种概念上的抽象和总结。

时间: 2024-10-09 16:47:18

类、多态、抽象、接口小结的相关文章

JAVA 之 多态 抽象 接口

一:多态 1:多态   一个对象有多种形式的能力 2:步骤 1编写父类派生子类 2子类重写父类方法 3用父类的数据类型引用子类对象 3:静态多态的实现方式就是方法重载 4:动态多态的实现方式就是重写父类中同名成员方法 5:使用instanceof关键字判断对象的真正类型 语句形式   引用instanceof 类名 eg;Empe=new Hourly(); if(einstanceofHourly){ Hourlyx=(Hourly) e;// 强制转换一个Hourly类型 } 6:多态的应用

黑马程序员---java基础-Java类 继承&抽象&接口

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.继承 继承是所有OOP语言不可缺少的部分,在java中使用extends关键字来表示继承关系.当创建一个类时,总是在继承,如果没有明确指出要继承的类,就总是隐式地从根类Object进行继承.比如下面这段代码: 1 class Person { 2 public Person() { 3 4 } 5 } 6 class Man extends Person { 7 public Man()

Java中关于继承、类、多态、接口的知识点

继承 含义:在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类 优点:1)代码的重用性:2)子类扩展父类的属性和方法:3)父类的属性和方法可用于子类:4)设计应用程序变得更加简单 继承的实现: 关键字extends:继承其ted他类,可以继承public,protected public class Salary extends Employee super关键字: 作用:调用父类中重写的方法 注意:调父类构造器是第一句可执行语句:默认情况下子类会调用父类的无参

抽象接口的过程小结

今天做项目的时候遇到需求顺便小结下自己抽象为接口定义共有的抽象方法: 1.需求: 在MainActivity中通过一个广播(单独的一个文件类)来监听传感器是否插入,拔出,重写广播的onReciver方法, 判断status(连接状态)获得Context对象,转换为MainActivity然后调用MainActivity连接成功的方法和拔出方法 更新MainActivity相关的UI或数据 2.分析: (1)考虑到其他多个页面也可能需要监听传感器是否插入也就是只有连接上和未连接上两种状态(conn

类,抽象基类,接口类三者间的区别与联系(C++)

联系很明显,三个都是‘类’,如果读者对类的概念不清楚,可以参照wid的博文http://www.cnblogs.com/mr-wid/archive/2013/02/18/2916309.html. 下面着重解释一下区别,但此文仅是个人理解,如果觉得我说的不对的地方,还请赐教. (1)结构上的区别: 普通类:数据+方法+实现 抽象类:数据+方法(一定包含虚方法n>=1)+部分方法的实现 接口类:方法(纯虚方法) (2)概念上的区别: 普通的类和另外两个的区别很明显,普通类就是猫狗之类的,而抽象类

和类先关的小结

类 "类"是一种构造,通过使用该构造,您可以将其他类型的变量.方法和事件组合在一起,从而创建自己的自定义类型. 类就像一个蓝图, 它定义类型的数据和行为. 如果类没有声明为静态类,客户端代码就可以创建赋给变量的"对象"或"实例",从而使用该类. 在对变量的所有引用都超出范围之前,该变量始终保持在内存中. 所有引用都超出范围时,CLR 将标记该变量以供垃圾回收. 如果类声明为静态类,则内存中只存在一个副本,并且客户端代码只能通过该类自身而不是&qu

C#中的继承与多态还有接口

简单继承 最简单的三个类 public class Animal { public Animal() { Debug.Log("Construct Animal!"); } } public class Mammal : Animal { public Mammal() { Debug.Log("Construct Mamal!"); } } public class Sheep : Mammal { public Sheep() { Debug.Log("

java----基础(this,继承,多态,抽象类,接口)

this指针 this指针在类定义时用到,this属于用类实例化的对象,只能在定义类的时候使用:(在下面的代码中会有体现) 类变量&类方法 定义: 访问修饰符 static+数据类型+变量名 所有该类的对象均可访问,均可修改,不会在调用后初始化,相当于全局变量. 可以被所有对象访问到,并且可以通过类访问到  类名.类变量 静态方法 == 类方法 可以被类名和对象访问到 原则上类变量用类方法来访问 类方法中不能访问非类变量,类变量可以被非类方法访问. 四种访问控制符: public : 对外公开

java基础三 [深入多态,接口和多态](阅读Head First Java记录)

抽象类和抽象方法 1.抽象类的声明方法,在前面加上抽象类的关键词abstract abstract class canine extends animal{ public void roam(){} } 抽象类除了被继承过之外,是没有用途,没有值,没有目的.类中的方法可以当做子类的合约内容,合约是对其他程序的承诺协议 抽象类中可以带有抽象和非抽象的方法 如果类中有抽象方法,则类必定标识为抽象的. 2.抽象的方法没有实体 (因为方法中的程序代码没有意义.抽象类需要被extend过有意义,抽象方法一

多态&抽象&继承

多态 package cn.itcast.extend; public class ExtendDemo2 { public static void main(String[] args) { A a=new B();//多条 System.out.println(a.num); a.show();//非静态 a.say();//静态方法 } } class A{ int num=10; //静态方法 public static void say(){ System.out.println("父