一、面向对象--->先了解类,对象的概念
类三大特征:封装、继承、多态。
关系:类的实现必须依靠对象,类封装了对象的属性和方法
创建对象:类名称 对象名称 = new 类名称() ;
访问属性和方法: 对象.属性 ; 对象.方法(实际参数列表) ;
同一个包下,不能有重复的类名;一个.java文件只能有一个public类。
了解内存机制,栈内存、堆内存、方法区等。
栈内存存放基本数据类型(包含变量和值)和引用类型的引用,
堆内存存放引用数据类型数据,创建的对象等,具有垃圾回收机制。
二、内部内
成员内部类:
package com.tn.classes;
public class extend_class {
/*内部类分四种*/
/*成员内部类*/
public static void main(String[] args) {
Out outter = new Out(18);
System.out.println(outter.age);
//Out.In inner = new Out.In(19);
Out.In inner = outter.new In();
inner.todo();
}
}
class Out{//独立定义于当前public类之外
public int age ;
public Out(int ages){
this.age = ages;
}
class In{
public int age = 19;
public void todo(){
System.out.println(age);
System.out.println(Out.this.age);
}
}
}
(1)成员内部类定义于public类之外;
(2)创建对象:
外部类:普通格式
内部类:外部类.内部类 对象名 = 外部对象.new 内部类()
(3)访问属性和方法时,默认以内部类优先;
(4)访问外部类属性和方法:外部类.this.属性 外部类.this.方法(参数列表)
静态内部类:
(1)在成员内部类基础上,将内部类添加static修饰符,可使内部类不受外部类限制;
(2)它不能使用外部类的非static成员变量或者方法。
三、包装类
(1)包装类符合java面向对象的设计原则,其内存原理和对象的存储类似;
(2)分为Number的子类:数据类 和 Object的子类:Character、Boolean;
(3)装箱:基本数据类型------>引用数据类型;
拆箱:反之;
(4)Interger的初始化<====>new一个对象,变量名代表在栈中占有的地址值。
package com.tn.boxes;
public class box {
public static void main(String[] args) {
Integer a=1000,b=1000;
System.out.println(a == b);
}
}
上述返回false,因为占有不同地址。
四、抽象类
(1)抽象类必须加入abstarct关键字,不能加入final、private(都导致无法创建子类);
(2)抽象类中可以没有抽象,如果要写抽象方法,则写在接口中或该类中,且没有方法体({没有花括号部分}(jdk1.8以前));
(3)抽象类不能被new实例化(抽象父类被JVM实例化);
(4)抽象类必须被子类继承,若子类不是抽象类则必须重写抽象类的全部抽象方法。
(5)抽象类的子类实例化过程:先调用父类的默认构造器(无参),然后调用子类本身的构造器。
(6)抽象类中的属性为普通属性,接口则必须是公共静态常量
五、接口
一个类,内部方法为抽象方法( public abstract),属性为全局常量(public static final )时,省略以上关键字,直接定义属性和方法,便可将该类修改成implements接口。
(1)子类可同时继承一个父类,可实现多个接口;
(2)接口本身不可使用,需在子类使用,子类若不是抽象类则必须实现接口的所有抽象方法;
(3)接口无构造器,抽象类可以有;
(4)对于interface接口本身,由于都是抽象部分,所以没有具体的实现,允许多继承。
六、多态
两种体现:
一个类中方法的多态性:重写;
父子类中方法的多态性:重载、子类是父类的多态;
父类子类对象的转换:
向上转型: 父类 父类对象 = 子类对象; 此时父类对象可以调用子类覆盖和继承自父类本身的方法,但不能调用子类特有的方法。
关键字:instanceof返回boolean类型,判断当前对象是否为该类实例。
Object是所有类的基类,且能接收任意类型的(引用?)数据类型;
七、异常
try--catch(Exception e)--finally语句,用于发现异常并处理,其对栈内存和堆内存的return备份值处理不同。
所有异常产生后,都会产生一个异常类的实例对象,或许由JVM创建,也可以通过throw抛出异常(不会报错,会直接抛出异常)。
父类Throwable(可能的抛出)存在两个子类:Error和Exception。
只要是RuntimeException的子类,则表示程序在操作的时候可以不必使用try…catch进行处理。
八、重载(Overload),重写(Override)
重写注意:
子类的重写方法访问权限不能比父类的访问权限低;
声明为static和private的方法不能重写,可以声明。
重载的方法与其返回值类型无关,与访问权限无关;
九、核心机制
跨平台原理:使用JVM。在不同的操作系统平台有不同的JVM,其中的解释器组件可实现与操作系统的通信,从而避免了底层平台差异,实现“一次编译,随处运行”。
垃圾回收机制:在程序运行时自动开启,在JVM空闲时,自动回收不再使用的内存空间。
十、一些关键字
this:在一个构造方法中,若要调用另一个构造方法,则必须把this()写在构造方法的第一行。
static:写在类、方法、属性等中,静态的内容只在内存中存在一份,可理解为为所有对象共有。
静态成员在类加载时就完成初始化。
final:通过final修饰的属性和变量都变为常量,即不能再被赋值的属性和变量。
final修饰类则类不能被继承,修饰方法则方法不能被子类重写。
以上内容具体请参考:
(36条消息) Java面向对象(知识点整理)_java面向对象知识点总结_自嘲的丶微笑的博客-CSDN博客