[Java]2.面向对象
来源:互联网 发布:苹果自动开关机软件 编辑:程序博客网 时间:2024/05/22 04:26
一、关于面向对象
面向对象对于编程而言是非常重要的思想,面向对象的思想在java中体现在抽象、封装上,多态则是其运用时的体现,面向对象最直接的好处在于增强了代码的复用,这是极为重要的。
编程当中,方法都应尽量依附对象和类。
static void sayHello() ; // 该方法属于这个类
void sayHello(); //该方法属于这个类的实例
(变量同理)
java里面的参数传递机制:值传递
将实际参数的副本(复制品)传入方法内,参数本身不受影响。
形参可变的方法,下面的books为可变数组。
例如:public void test(int a, String... books)
相当于:public void test (int a, String[] books)
同个类中包含多个方法名相同,形参不同,称为重载(overload)
至于方法的其他部分如修饰符、返回值,跟重载没有任何关系
重载方法,调用此方法时会根据传入的形参决定调用的方法。
构造器是一个特殊的方法,用于创建实例时执行初始化
必须包含一个或者多个构造器
系统会默认提供一个无参的构造器
二、隐藏与封装
隐藏类的实现细节
让使用者只能通过预定的方法来访问状态信息,从而在该方法里面加入控制逻辑,限制对成员变量的不合理的访问
可进行数据检查,从而有利于保证对象信息的完整性
private:当前类访问
default:包访问
protected:子类访问
三、继承
JAVA类具有单继承特点,每个子类只有一个直接父类
继承父类使用extends关键字
定义一个类未显式声明,默认扩展java.lang.Object类
Object类是所有类的父类
implements关键字可以多实现接口
尽量不要在父类构造器中调用被子类重写的方法(空指针)
super:
用于调用父类被覆盖的实例方法,不能是静态方法(static)
用于调用父类的构造函数,例如 super(value1,value2)
用于调用父类的实例变量,例如 super.value
四、多态
Java引用变量有两类:编译时类型和运行时类型
编译时类型:由声明该变量时候用的类型决定
运行时类型:由实际赋值给该变量的对象决定
//编译类型为Object,实际类型是Integer
Object obj=new Integer(100);
if(obj instanceof String){
String str=(String)obj;
}
五、初始化块
{}包裹的代码
只能用static修饰或不修饰,静态的先执行然后从上到下
六、包装类
包装类的设计目的,是为了方便基础数据类型进行计算和转换的繁琐操作
基本数据类型不能当成Object类型变量来使用,只能使用包装类
byte——Byte
short——Short
int——Integer
long——Long
char——Character
float——Float
double——Double
boolean——Boolean
装箱:基本数据类型变量-->包装类对象
拆箱:包装类对象-->基本数据类型变量
Integer inObj=100; //自动装箱
Object boolObj=true; //自动装箱
int it=inObj; //自动拆箱
字符串-->基本数据类型:
方法一:利用包装类里面的parseXxx(String s)的静态方法(Character无此方法)
方法二:利用包装类的Xxx(String s)构造器
基本数据类型-->字符串:
利用String.valueOf(val) 转换
七、Object类型基本方法:
对象描述:toString()
对象对比:equals()
== 和 equals方法:
==:基础数据类型中使用
equals(): 引用数据类型中使用
八、final修饰符:
final成员变量一旦有了初始值,就不能被重新赋值
如果不赋值,系统将会默认给它分配0、null或者false等值,毫无意义,也无法再次改变,所以必须显式初始化
final修饰的类不可以有子类
final变量-基本类型和引用类型区别:
基本类型:不能重复赋值
引用类型:它仅仅是保存一个引用,只保证引用地址不会改变即可,也就是说对象本身是可以改变的。
final int [] iArr={3,4,2,9,6};
数组内容可以一直改变
九、抽象类和接口
接口特点:
使用interface关键字进行修饰
接口支持多继承
public interface 接口名 extends 父接口1, 父接口2...
所有方法都是抽象方法(abstract)并且是使用public修饰的
接口里的成员变量默认使用public static final进行修饰
实现接口方法时,必须使用public访问控制符
抽象类和接口的区别:
抽象类可以有私有的方法和变量,接口的内容都必须是公有的。
抽象类和接口的共有特点:
有方法而无实现(方法体)方法都用abstract修饰
十、内部类
静态内部类:
只能访问外部类的静态方法
成员内部类:
可以访问外部类中的静态和非静态方法和成员变量
this.a调用内部类成员
OutClass.this.a调用外部类成员
局部内部类(方法内部类):
类似于局部变量,不能定义为public,protected,private或者static类型。
局部内部类只能访问final类型的变量
不能被直接创建,只能通过调用所在方法创建
匿名内部类:
匿名内部类没有类名,没有class关键字也没有extends和implements等关键字修饰。
匿名内部类会隐式地继承一个父类或实现一个接口。
内部类优点,内部类可以随意使用其外部类的变量和方法(不需要创建外部类对象),包括私有成员
十一、枚举类
SeasonEnum returnstring = Enum.valueOf(SeasonEnum.class,string)
valueof作用等价于toString
枚举类的方法:values可以获取每一个实例,用于遍历枚举类型
十二、GC(对象垃圾回收机制)
超出作用域或对象为null时回收
只回收对象
无法精确控制垃圾回收的运行
回收对象之前,都会先调用finalize()
对象在jvm堆区的三种状态:
可达状态
可恢复状态
不可达状态
只能控制对象何时不被引用(为NULL,不可达状态),不能控制回收时间
强制垃圾回收:System.gc和Runtime.getRuntime.gc可以提醒系统回收(后者更好)
System.runFinalization()马上执行finalize
0 0
- [Java]2.面向对象
- Java面向对象-2.对象
- Java SE 2.面向对象
- java----Java面向对象
- java----Java面向对象
- java----Java面向对象
- java----Java面向对象
- java----Java面向对象
- java----Java面向对象
- 【java】java面向对象
- 【Java】Java面向对象
- 【JAVA学习】2.面向对象理解
- 2.java语言(面向对象语言)
- java基础--3.面向对象-2.概述
- java面向对象(一) 了解面向对象
- Java面向对象概述
- java面向对象
- JAVA面向对象
- 使用scala操作hbase api
- SetTimer使用
- WebRTC audio解码后播放【转】
- OJ3361数据结构实验之图论四:迷宫探索
- 网络请求库之android-async-http
- [Java]2.面向对象
- C++标准IO库
- UVA 1635 Irrelevant Elements(唯一分解定理,杨辉三角)
- WebView 点击浏览大图
- PHP中$_SERVER的详细参数与说明
- 线段树区间交-杭电1255
- Phyton安装MySQL驱动
- Linux下Nodejs安装
- 今天第一天学习PHP正则