java学习笔记(4)
来源:互联网 发布:电脑上能看淘宝直播吗 编辑:程序博客网 时间:2024/05/15 23:52
常量(这里的常量指的是实例常量:即成员变量)赋值: ①在初始化的时候通过显式声明赋值。Final int x=3; ②在构造的时候赋值。 局部变量可以随时赋值。
利用final定义方法:这样的方法为一个不可覆盖的方法。 Public final void print(){}; 为了保证方法的一致性(即不被改变),可将方法用final定义。
如果在父类中有final定义的方法,那么在子类中继承同一个方法。
如果一个方法前有修饰词private或static,则系统会自动在前面加上final。即private和static方法默认均为final方法。
注:final并不涉及继承,继承取决于类的修饰符是否为private、default、protected还是public。也就是说,是否继承取决于这个方法对于子类是否可见。 Abstract(抽象)可以修饰类、方法
如果将一个类设置为abstract,则此类必须被继承使用。此类不可生成对象,必须被继承使用。 Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性。 Abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型。 Final和abstract永远不会同时出现。
当abstract用于修饰方法时,此时该方法为抽象方法,此时方法不需要实现,实现留给子类覆盖,子类覆盖该方法之后方法才能够生效。
注意比较:
private void print(){};此语句表示方法的空实现。
Abstract void print(); 此语句表示方法的抽象,无实现。
如果一个类中有一个抽象方法,那么这个类一定为一个抽象类。 反之,如果一个类为抽象类,那么其中可能有非抽象的方法。
如果让一个非抽象类继承一个含抽象方法的抽象类,则编译时会发生错误。因为当一个非抽象类继承一个抽象方法的时候,本着只有一个类中有一个抽象方法,那么这个类必须为抽象类的原则。这个类必须为抽象类,这与此类为非抽象冲突,所以报错。
所以子类的方法必须覆盖父类的抽象方法。方法才能够起作用。
只有将理论被熟练运用在实际的程序设计的过程中之后,才能说理论被完全掌握!
为了实现多态,那么父类必须有定义。而父类并不实现,留给子类去实现。此时可将父类定义成abstract类。如果没有定义抽象的父类,那么编译会出现错误。
Abstract和static不能放在一起,否则便会出现错误。(这是因为static不可被覆盖,而abstract为了生效必须被覆盖。) 例:(本例已存在\CODING\abstract\TestClass.java文件中) public class TestClass{
public static void main(String[] args){SuperClass sc=new SubClass(); Sc.print(); }
Abstract class SuperClass{ Abstract void print();} }
class SubClass extends SuperClass(){ void print(){
System.out.println(“print”);} }
JAVA的核心概念:接口(interface)
接口与类属于同一层次,实际上,接口是一种特殊的抽象类。 如:
interface IA{ }
public interface:公开接口
与类相似,一个文件只能有一个public接口,且与文件名相同。 在一个文件中不可同时定义一个public接口和一个public类。
一个接口中,所有方法为公开、抽象方法;所有的属性都是公开、静态、常量。
一个类实现一个接口的格式: class IAImple implements IA{ };
一个类实现接口,相当于它继承一个抽象类。
类必须实现接口中的方法,否则其为一抽象类。 实现中接口和类相同。
接口中可不写public,但在子类中实现接口的过程中public不可省。
(如果剩去public则在编译的时候提示出错:对象无法从接口中实现方法。)
注:
① 一个类除继承另外一个类,还可以实现接口;
class IAImpl extends java.util.Arrylist implement IA{} 继承类 实现接口 这样可以实现变相的多继承。
② 一个类只能继承另外一个类,但是它可以继承多个接口,中间用“,”隔开。 Implements IA,IB
所谓实现一个接口,就是指实现接口中的方法。
③ 接口和接口之间可以定义继承关系,并且接口之间允许实现多继承。 例:interface IC extends IA,IB{}; 接口也可以用于定义对象 IA I=new IAImpl();
实现的类从父类和接口继承的都可做运行时类型。 IAImple extends A implement IA,IB IB I=new IAImple();I instance of IAImple; I instance of A; I instance of IA; I instance of IB; 返回的结果均为true.
利用final定义方法:这样的方法为一个不可覆盖的方法。 Public final void print(){}; 为了保证方法的一致性(即不被改变),可将方法用final定义。
如果在父类中有final定义的方法,那么在子类中继承同一个方法。
如果一个方法前有修饰词private或static,则系统会自动在前面加上final。即private和static方法默认均为final方法。
注:final并不涉及继承,继承取决于类的修饰符是否为private、default、protected还是public。也就是说,是否继承取决于这个方法对于子类是否可见。 Abstract(抽象)可以修饰类、方法
如果将一个类设置为abstract,则此类必须被继承使用。此类不可生成对象,必须被继承使用。 Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性。 Abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型。 Final和abstract永远不会同时出现。
当abstract用于修饰方法时,此时该方法为抽象方法,此时方法不需要实现,实现留给子类覆盖,子类覆盖该方法之后方法才能够生效。
注意比较:
private void print(){};此语句表示方法的空实现。
Abstract void print(); 此语句表示方法的抽象,无实现。
如果一个类中有一个抽象方法,那么这个类一定为一个抽象类。 反之,如果一个类为抽象类,那么其中可能有非抽象的方法。
如果让一个非抽象类继承一个含抽象方法的抽象类,则编译时会发生错误。因为当一个非抽象类继承一个抽象方法的时候,本着只有一个类中有一个抽象方法,那么这个类必须为抽象类的原则。这个类必须为抽象类,这与此类为非抽象冲突,所以报错。
所以子类的方法必须覆盖父类的抽象方法。方法才能够起作用。
只有将理论被熟练运用在实际的程序设计的过程中之后,才能说理论被完全掌握!
为了实现多态,那么父类必须有定义。而父类并不实现,留给子类去实现。此时可将父类定义成abstract类。如果没有定义抽象的父类,那么编译会出现错误。
Abstract和static不能放在一起,否则便会出现错误。(这是因为static不可被覆盖,而abstract为了生效必须被覆盖。) 例:(本例已存在\CODING\abstract\TestClass.java文件中) public class TestClass{
public static void main(String[] args){SuperClass sc=new SubClass(); Sc.print(); }
Abstract class SuperClass{ Abstract void print();} }
class SubClass extends SuperClass(){ void print(){
System.out.println(“print”);} }
JAVA的核心概念:接口(interface)
接口与类属于同一层次,实际上,接口是一种特殊的抽象类。 如:
interface IA{ }
public interface:公开接口
与类相似,一个文件只能有一个public接口,且与文件名相同。 在一个文件中不可同时定义一个public接口和一个public类。
一个接口中,所有方法为公开、抽象方法;所有的属性都是公开、静态、常量。
一个类实现一个接口的格式: class IAImple implements IA{ };
一个类实现接口,相当于它继承一个抽象类。
类必须实现接口中的方法,否则其为一抽象类。 实现中接口和类相同。
接口中可不写public,但在子类中实现接口的过程中public不可省。
(如果剩去public则在编译的时候提示出错:对象无法从接口中实现方法。)
注:
① 一个类除继承另外一个类,还可以实现接口;
class IAImpl extends java.util.Arrylist implement IA{} 继承类 实现接口 这样可以实现变相的多继承。
② 一个类只能继承另外一个类,但是它可以继承多个接口,中间用“,”隔开。 Implements IA,IB
所谓实现一个接口,就是指实现接口中的方法。
③ 接口和接口之间可以定义继承关系,并且接口之间允许实现多继承。 例:interface IC extends IA,IB{}; 接口也可以用于定义对象 IA I=new IAImpl();
实现的类从父类和接口继承的都可做运行时类型。 IAImple extends A implement IA,IB IB I=new IAImple();I instance of IAImple; I instance of A; I instance of IA; I instance of IB; 返回的结果均为true.
0 0
- java学习笔记(4)
- java学习笔记(4)
- java学习笔记(4)
- Java学习笔记4
- java学习笔记4
- java学习笔记4
- JAVA学习笔记4
- java学习笔记4
- java学习笔记4
- java 学习笔记4
- java学习笔记4
- Java学习笔记4
- java学习笔记4
- java学习笔记4
- Java学习笔记4
- java学习笔记4
- Java学习笔记4
- Java学习笔记(4)
- 802.1x协议浅析
- lua正则表达式
- Codeforces 432A Choosing Teams
- Android 蓝牙通信
- db2 触发器
- java学习笔记(4)
- 和机器学习和计算机视觉相关的数学
- scanf函数
- C函数 随机数rand() srand()
- Linux_Linux安装(CentOS)_兄弟连视频配套
- Javascript的this用法
- Go 语言的错误处理机制
- jQuery 学习笔记之 动画与特效
- FregServer进程,获取ServiceManager代理对象