做企业网站公司,wordpress怎么删除某页页眉,wordpress 启用插件代码,网站建设 有限公司文章目录Java基本概念源文件声明规则Java包Import语句继承类型继承的特性继承关键字super 与 this 关键字构造器方法的重写规则重载(Overload)重写与重载之间的区别java 接口接口与类相似点#xff1a;接口与类的区别#xff1a;接口特性抽象类和接口的区别接口的声明接口的实…
文章目录Java基本概念源文件声明规则Java包Import语句继承类型继承的特性继承关键字super 与 this 关键字构造器方法的重写规则重载(Overload)重写与重载之间的区别java 接口接口与类相似点接口与类的区别接口特性抽象类和接口的区别接口的声明接口的实现接口的继承接口的多继承标记接口Java基本概念
Java作为一种面向对象语言。支持以下基本概念
多态 多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口使用不同的实例而执行不同操作 继承 继承是java面向对象编程技术的一块基石因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为使得子类对象实例具有父类的实例域和方法或子类从父类继承方法使得子类具有父类相同的行为。继承需要符合的关系是is-a父类更通用子类更具体。 类的继承格式 在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的一般形式如下 class 父类 {
}
class 子类 extends 父类 {
}封装 在面向对象程式设计方法中封装英语Encapsulation是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。 封装可以被认为是一个保护屏障防止该类的代码和数据被外部类定义的代码随机访问。 要访问该类的代码和数据必须通过严格的接口控制。 封装最主要的功能在于我们能修改自己的实现代码而不用修改那些调用我们代码的程序片段。 适当的封装可以让程式码更容易理解与维护也加强了程序源代码的安全性。 1.修改属性的可见性来限制对属性的访问一般限制为private 2.对每个值属性提供对外的公共方法访问也就是创建一对赋取值方法用于对私有属性的访问 抽象 在面向对象的概念中所有的对象都是通过类来描绘的但是反过来并不是所有的类都是用来描绘对象的如果一个类中没有包含足够的信息来描绘一个具体的对象这样的类就是抽象类。 1.抽象类除了不能实例化对象之外类的其它功能依然存在成员变量、成员方法和构造方法的访问方式和普通类一样。 2.由于抽象类不能实例化对象所以抽象类必须被继承才能被使用。也是因为这个原因通常在设计阶段决定要不要设计抽象类。 3.父类包含了子类集合的常见的方法但是由于父类本身是抽象的所以不能使用这些方法。 4.在Java中抽象类表示的是一种继承关系一个类只能继承一个抽象类而一个类却可以实现多个接口。 5.在Java语言中使用abstract class来定义抽象类 类 类类是一个模板它描述一类对象的行为和状态。类可以看成是创建Java对象的模板。 对象 对象对象是类的一个实例对象不是找个女朋友有状态和行为。例如一条狗是一个对象它的状态有颜色、名字、品种行为有摇尾巴、叫、吃等。 对象是根据类创建的。在Java中使用关键字new来创建一个新的对象。创建对象需要以下三步 1.声明声明一个对象包括对象名称和对象类型。 2.实例化使用关键字new来创建一个对象。 3.初始化使用new创建对象时会调用构造方法初始化对象。 实例方法重载
源文件声明规则
当在一个源文件中定义多个类并且还有import语句和package语句时要特别注意这些规则。
一个源文件中只能有一个public类一个源文件可以有多个非public类源文件的名称应该和public类的类名保持一致。例如源文件中public类的类名是Employee那么源文件应该命名为Employee.java。如果一个类定义在某个包中那么package语句应该在源文件的首行。如果源文件包含import语句那么应该放在package语句和类定义之间。如果没有package语句那么import语句应该在源文件中最前面。import语句和package语句对源文件中定义的所有类都有效。在同一源文件中不能给不同的类不同的包声明。类有若干种访问级别并且类也分不同的类型抽象类和final类等。
Java包
包主要用来对类和接口进行分类。当开发Java程序时可能编写成百上千的类因此很有必要对类和接口进行分类
Import语句
在Java中如果给出一个完整的限定名包括包名、类名那么Java编译器就可以很容易地定位到源代码或者类。Import语句就是用来提供一个合理的路径使得编译器可以找到某个类。
继承类型
需要注意的是 Java 不支持多继承但支持多重继承。
继承的特性
1.子类拥有父类非 private 的属性、方法。 2.子类可以拥有自己的属性和方法即子类可以对父类进行扩展。 3.子类可以用自己的方式实现父类的方法。 4.Java 的继承是单继承但是可以多重继承单继承就是一个子类只能继承一个父类多重继承就是例如 A 类继承 B 类B 类继承 C 类所以按照关系就是 C 类是 B 类的父类B 类是 A 类的父类这是 Java 继承区别于 C 继承的一个特性。 5.提高了类之间的耦合性继承的缺点耦合度高就会造成代码之间的联系越紧密代码独立性越差。
继承关键字
继承可以使用 extends 和 implements 这两个关键字来实现继承而且所有的类都是继承于 java.lang.Object当一个类没有继承的两个关键字则默认继承object这个类在 java.lang 包中所以不需要 import祖先类。
extends关键字 在 Java 中类的继承是单一继承也就是说一个子类只能拥有一个父类所以 extends 只能继承一个类。implements关键字 使用 implements 关键字可以变相的使java具有多继承的特性使用范围为类继承接口的情况可以同时继承多个接口接口跟接口之间采用逗号分隔。
super 与 this 关键字
super关键字我们可以通过super关键字来实现对父类成员的访问用来引用当前对象的父类。this关键字指向自己的引用。
构造器
子类是不继承父类的构造器构造方法或者构造函数的它只是调用隐式或显式。如果父类的构造器带有参数则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。
如果父类构造器没有参数则在子类的构造器中不需要使用 super 关键字调用父类构造器系统会自动调用父类的无参构造器
方法的重写规则
参数列表必须完全与被重写方法的相同。返回类型与被重写方法的返回类型可以不相同但是必须是父类返回值的派生类java5 及更早版本返回类型要一样java7 及更高版本可以不同。访问权限不能比父类中被重写的方法的访问权限更低。例如如果父类的一个方法被声明为 public那么在子类中重写该方法就不能声明为 protected。父类的成员方法只能被它的子类重写。声明为 final 的方法不能被重写。声明为 static 的方法不能被重写但是能够被再次声明。子类和父类在同一个包中那么子类可以重写父类所有方法除了声明为 private 和 final 的方法。子类和父类不在同一个包中那么子类只能够重写父类的声明为 public 和 protected 的非 final 方法。重写的方法能够抛出任何非强制异常无论被重写的方法是否抛出异常。但是重写的方法不能抛出新的强制性异常或者比被重写方法声明的更广泛的强制性异常反之则可以。构造方法不能被重写。如果不能继承一个方法则不能重写这个方法。
重载(Overload)
重载(overloading) 是在一个类里面方法名字相同而参数不同。返回类型可以相同也可以不同。 每个重载的方法或者构造函数都必须有一个独一无二的参数类型列表。 最常用的地方就是构造器的重载。 重载规则:
被重载的方法必须改变参数列表(参数个数或类型不一样)被重载的方法可以改变返回类型被重载的方法可以改变访问修饰符被重载的方法可以声明新的或更广的检查异常方法能够在同一个类中或者在一个子类中被重载。无法以返回值类型作为重载函数的区分标准。
重写与重载之间的区别
区别点重载方法重写方法参数列表必须修改一定不能修改返回类型可以修改一定不能修改异常可以修改可以减少或删除一定不能抛出新的或者更广的异常访问可以修改一定不能做更严格的限制可以降低限制
方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现重写是父类与子类之间多态性的一种表现重载可以理解成多态的具体表现形式。 1.方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。 2.方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。 3.方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。
java 接口
接口英文Interface在JAVA编程语言中是一个抽象类型是抽象方法的集合接口通常以interface来声明。一个类通过继承接口的方式从而来继承接口的抽象方法。
接口并不是类编写接口的方式和类很相似但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类否则该类要定义接口中的所有方法。
接口无法被实例化但是可以被实现。一个实现接口的类必须实现接口内所描述的所有方法否则就必须声明为抽象类。另外在 Java 中接口类型可用来声明一个变量他们可以成为一个空指针或是被绑定在一个以此接口实现的对象。
接口与类相似点
一个接口可以有多个方法。接口文件保存在 .java 结尾的文件中文件名使用接口名。 接口的字节码文件保存在 .class 结尾的文件中。接口相应的字节码文件必须在与包名称相匹配的目录结构中。
接口与类的区别
接口不能用于实例化对象。接口没有构造方法。接口中所有的方法必须是抽象方法。接口不能包含成员变量除了 static 和 final 变量。接口不是被类继承了而是要被类实现。接口支持多继承。
接口特性
接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract只能是 public abstract其他修饰符都会报错。接口中可以含有变量但是接口中的变量会被隐式的指定为 public static final 变量并且只能是 public用 private 修饰会报编译错误。接口中的方法是不能在接口中实现的只能由实现接口的类来实现接口中的方法。
抽象类和接口的区别
抽象类中的方法可以有方法体就是能实现方法的具体功能但是接口中的方法不行。抽象类中的成员变量可以是各种类型的而接口中的成员变量只能是 public static final 类型的。接口中不能含有静态代码块以及静态方法(用 static 修饰的方法)而抽象类是可以有静态代码块和静态方法。一个类只能继承一个抽象类而一个类却可以实现多个接口。 注JDK 1.8 以后接口里可以有静态方法和方法体了。
接口的声明
接口的声明语法格式如下
[可见度] interface 接口名称 [extends 其他的接口名] {// 声明变量// 抽象方法
}Interface关键字用来声明一个接口。下面是接口声明的一个简单例子。
import java.lang.*;
//引入包public interface NameOfInterface {//任何类型 final, static 字段//抽象方法
}接口有以下特性
接口是隐式抽象的当声明一个接口的时候不必使用abstract关键字。接口中每一个方法也是隐式抽象的声明时同样不需要abstract关键字。接口中的方法都是公有的。 实例
interface Animal {public void eat();public void travel();
}接口的实现
当类实现接口的时候类要实现接口中所有的方法。否则类必须声明为抽象的类。
类使用implements关键字实现接口。在类声明中Implements关键字放在class声明后面。
实现一个接口的语法可以使用这个公式
...implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...实例
public class MammalInt implements Animal{public void eat(){System.out.println(Mammal eats);}public void travel(){System.out.println(Mammal travels);}public int noOfLegs(){return 0;}public static void main(String args[]){MammalInt m new MammalInt();m.eat();m.travel();}
}以上实例编译运行结果如下:
Mammal eats
Mammal travels重写接口中声明的方法时需要注意以下规则
类在实现接口的方法时不能抛出强制性异常只能在接口中或者继承接口的抽象类中抛出该强制性异常。类在重写方法时要保持一致的方法名并且应该保持相同或者相兼容的返回值类型。如果实现接口的类是抽象类那么就没必要实现该接口的方法。
在实现接口的时候也要注意一些规则
一个类可以同时实现多个接口。一个类只能继承一个类但是能实现多个接口。一个接口能继承另一个接口这和类之间的继承比较相似。
接口的继承
一个接口能继承另一个接口和类之间的继承方式比较相似。接口的继承使用extends关键字子接口继承父接口的方法。
下面的Sports接口被Hockey和Football接口继承
// 文件名: Sports.java
public interface Sports {public void setHomeTeam(String name);public void setVisitingTeam(String name);
}// 文件名: Football.java
public interface Football extends Sports {public void homeTeamScored(int points);public void visitingTeamScored(int points);public void endOfQuarter(int quarter);
}// 文件名: Hockey.java
public interface Hockey extends Sports {public void homeGoalScored();public void visitingGoalScored();public void endOfPeriod(int period);public void overtimePeriod(int ot);
}Hockey接口自己声明了四个方法从Sports接口继承了两个方法这样实现Hockey接口的类需要实现六个方法。
相似的实现Football接口的类需要实现五个方法其中两个来自于Sports接口。
接口的多继承
在Java中类的多继承是不合法但接口允许多继承。
在接口的多继承中extends关键字只需要使用一次在其后跟着继承接口。 如下所示
public interface Hockey extends Sports, Event以上的程序片段是合法定义的子接口与类不同的是接口允许多继承而 Sports及 Event 可能定义或是继承相同的方法
标记接口
最常用的继承接口是没有包含任何方法的接口。
标记接口是没有任何方法和属性的接口.它仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情。
标记接口作用简单形象的说就是给某个对象打个标盖个戳使对象拥有某个或某些特权。
例如java.awt.event 包中的 MouseListener 接口继承的 java.util.EventListener 接口定义如下
package java.util;
public interface EventListener
{}没有任何方法的接口被称为标记接口。标记接口主要用于以下两种目的 建立一个公共的父接口 正如EventListener接口这是由几十个其他接口扩展的Java API你可以使用一个标记接口来建立一组接口的父接口。例如当一个接口继承了EventListener接口Java虚拟机(JVM)就知道该接口将要被用于一个事件的代理方案。 向一个类添加数据类型 这种情况是标记接口最初的目的实现标记接口的类不需要定义任何接口方法(因为标记接口根本就没有方法)但是该类通过多态性变成一个接口类型。