java类和对象内容总结

1.面向对象和面向过程的区别:

面向过程:是以过程为中心的编程思想,是按照过程一步一步解决问题的思想,比较适合于解决简单的问题。例如如何开车,我们就会想第一步干什么,第二步干什么。。。。。。这就是一个典型的面向过程的思维方式。
面向对象:面向对象是一种对现实世界理解和抽象的方法,以对象为导向的编程思想,比较适合用于解决较为复杂的问题(面向对象的三大特点:继承,封装,多态)。例如如何造车,这个问题就会比较麻烦,从过程入手就会很复杂,而这时我们可以考虑先做出车的部件比如发动机,轮胎。。。。。。这就是一个典型的面向对象的思维方式。

2.对象和类的关系:

类就是对象的抽象概念,而对象是类的具体表现。总而言之:类是对象的抽象,而对象是类的具体实例。

3.类的写法:

一个一般的类主要包含一下板块:1.成员变量(也叫类的属性)2.普通方法。 3.构造器。

class dog {
    
    
	//成员变量
	int age;
	String name;
	//方法
	void shout() {
    
    
		System.out.println("汪汪汪!");
	}
	//构造器
	dog(int age,String name){
    
    
		this.age=age;
		this.name=name;
	}
}

4.构造方法详解:

倘若没有写构造器,编译器会自动为我们生成一个构造器。但倘若自己写了一个构造器那么编译器就不会为我们自动生成了。(注意:构造器的方法名必须和类名保持一致)。

构造方法的重载:构造方法也是方法,与普通方法重载一样。
方法名称相同,形参列表不同。

class dog {
    
    
	//成员变量
	int age;
	String name;
	//方法
	void shout() {
    
    
		System.out.println("汪汪汪!");
	}
	//构造方法的重载
	dog(){
    
    
		
	}
	
	dog(int age){
    
    
		this.age=age;
	}
	
	dog(String name){
    
    
		this.name=name;
	}
	
	dog(int age,String name){
    
    
		this.age=age;
		this.name=name;
	}
}

5.关键词this

this的本质就是”创建好的对象的地址“!由于在构造方法调用前,对象已创建。因此,在构造方法中也可以用this代表当前对象。

this最常见的用法:
1.当程序产生二义性时,应使用this来指代当前对象。
2.使用this关键词来调用重载的构造方法,避免相同的初始化代码。
3.this不能用于static方法中。

6.关键词static

在类中,用static声明的成员变量为静态变量,也称为类变量(被static所修饰的属性或方法从属于类,普通变量和方法从属于对象)。它有如下特点:
1.为该类的公共变量,属于类,被该类的所有实例共享(例如人类有2个耳朵,像这种共有属性一般声明为静态变量)。
2.一般用"类名.方法/属性"来调用。也可以通过对象引用。
3.在static方法中不可直接访问非static的成员。

7.继承及instanceof的应用

继承让我们更加容易实现类的扩展,使用关键字extends。
继承的使用要点:
1.子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得可以直接访问(比如父类私有的属性和方法)。
2.Java中只有单继承,但接口有多继承。
3.如果定义一个类,没有调用extends,则它的父类是:Java.lang.Object。

instanceof可以用来判断对象是否是类或子类创建的对象。

8.方法的重写

子类可以通过重写父类的方法,可以用自身的行为替换父类的方法。
方法的重写需要符合下面的三个要点:
1.方法名,形参列表相同。
2.返回值类型子类小于等于父类。
3.访问权限子类大于等于父类。

9.==和equals

“==”代表比较双方是否相同。如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一对象。
equals:Object类中定义的方法,提供定义“对象内容相等”的逻辑。(及可以不是同一对象但两对象的内容相等,实际应用时经常需重写equals方法)

10.super关键字(父类对象引用)

super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。

11.封装的使用

编程中封装的具体优点:
1.提高代码的安全性。
2.提高代码的复用性。
3.”高内聚“:封装细节,便于修改内部代码,提高可维护性。
4.”低耦合“:简化外部调用,便于调用者使用,便于扩展和协作。

封装的实现(使用访问控制符):
1.private:表示私有,只有自己类能访问。
2.default表示没有修饰符修饰,只有同一个包的类能访问。
3.protected表示可以被同一个包的类以及其他包中的子类访问。
4.public表示可以被该项目的所有包中的所有类访问。

类的封装处理:
1.一般使用private访问权限。
2.提供相应的get/set方法来访问相关属性,这些方法通常是public修饰的,以提供对属性的赋值与读取操作。
3.一些只用于本类的辅助性方法可以用private修饰,希望其他类调用的方法用public修饰。

12.多态

多态指的是同一方法调用,由于对象不同可能会有不同的行为。

多态的要点:
1.多态是方法的多态,不是属性的多态(多态与属性无关)。
2.多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象。
3.父类引用指向子类对象(不同的子类对象会产生不同的结果)后,用该父类引用调用子类重写方法,此时多态就出现了。

13.final关键字

1.修饰变量:被它修饰的变量不可改变。一旦赋了初值,就不能被重新赋值。
2.修饰方法:该方法不可被子类重写,但可以重载。
3.修饰类:修饰的类不能被继承。

14.抽象方法和抽象类(用abstract关键字)

抽象方法:该方法没有方法体,只有声明。定义的是一种”规范“,就是告诉子类必须要给抽象方法提供具体实现。

抽象类:包含抽象方法的类就是抽象类。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。

抽象类的使用要点:
1.有抽象方法的类只能定义成抽象类。
2.抽象类不能实例化,即不能用new来实例化抽象类。
3.抽象类可以包含属性,方法,构造方法。但是构造方法不能用来new实例,只能用来被子类调用。
4.抽象类只能用来被继承。
5.抽象方法必须被子类继承。
6.抽象类中可以包含一般方法。

15.接口(关键词interface)

接口中所有方法都是抽象方法。

定义接口的详细说明:
1.修饰访问符:只能是public或默认。
2.接口名:和类名采用相同命名机制。
3.extends:接口可以多继承。
4.常量:接口中的属性只能是常量,默认被public static final修饰。
5.方法:接口中的方法默认被public abstract修饰。

要点:
1.子类通过implements来实现接口中的规范。
2.接口不能创建实例,但是可用于声明引用变量类型。
3.一个类实现了接口,必须实现接口中所有方法,并且这些方法只能是public的。

16.内部类的分类

内部类分为成员内部类(非静态内部类,静态内部类),匿名内部类,局部内部类。

非静态内部类(外部类里使用非静态内部类和使用其他类没什么不同):
1.非静态内部类必须寄存在一个外部类对象里。非静态内部类对象单独属于外部类的某个对象。
2.非静态内部类可以直接访问外部类的成员,但是外部类不能直接访问非静态内部类成员。
3.非静态内部类不能有静态方法,静态属性,静态初始化块。
4.外部类的静态方法,静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量,创建实例。
成员变量访问要点:
1.内部类里方法的局部变量:变量名。
2.内部类属性:this.变量名。
3.外部类属性:外部类名.this.变量名。

静态内部类:
使用要点:
1.当一个静态内部类对象存在,并不一定存在对应的外部类对象。因此,静态内部类的实例方法不能直接访问外部类的实例方法。
2.静态内部类看做外部类的一个静态成员。因此,外部类的方法中可以通过:”静态内部类名.名字“的方式访问静态内部类的静态成员,通过new静态内部类()访问静态内部类的实例。

匿名内部类(适合那些只需使用一次的类):

语法:
new 父类构造器\实现接口(){
//匿名内部类类体
}

注意:
1.匿名内部类没有访问修饰符。
2.匿名内部类没有构造方法。因为它连名字都没有。

局部内部类:(因为局部内部类在实际应用中很少,笔者在此就不过多介绍了)。

猜你喜欢

转载自blog.csdn.net/ABded/article/details/106358879