4.1面向对象OOP与面向过程POP
面向对象编程的三大特性:封装继承多态
Java的类及类的成员:
class类:属性(类中的成员变量)+行为(类中的成员方法)
类的格式:
修饰符 class 类名{
属性声明;
方法声明;
}
一个类的例子
public class Person {
String name;
int age;
boolean ismarried;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isIsmarried() {
return ismarried;
}
public void setIsmarried(boolean ismarried) {
this.ismarried = ismarried;
}
public Person(String name, int age, boolean ismarried) {
this.name = name;
this.age = age;
this.ismarried = ismarried;
}
public void walk(){
System.out.println(this.name+"走路中...");
}
public String display(){
return "名字:"+name+"年龄:"+age+ismarried;
}
}
4.2对象的创建和使用
使用new+构造器创建一个对象
public class Test{
public static void main(String[] args) {
class Person{
String name;
int age;
boolean isMarried;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isMarried() {
return isMarried;
}
public void setMarried(boolean married) {
isMarried = married;
}
public Person() {
}
public void walk(){
System.out.println(this.name+"走路中.,.");
}
public String display(){
return "名字为"+name+"年龄为"+"married"+isMarried;
}
}
Person p=new Person();
p.setName("张三");
p.setAge(18);
p.setMarried(false);
p.walk();
System.out.println(p.display());
}
}
4.3类的成员之一:属性
类的成员属性的语法格式:修饰符 类型 属性名= 初值;
4.4类的成员之二:方法
方法是类或者对象行为特征的抽象,也称为函数。
Java中的方法不能独立存在,所有的方法必须定义在类里边。
语法格式:
修饰符 返回值类型 方法名(参数类型 形参1,参数类型 形参2...){
程序代码;
}
4.5对象的产生
当一个对象被创建时,会对其中各类型的成员变量自动进行初始化赋值, byte、short、int初始化自动赋值为0; long初始化自动赋值为0L; float初始化自动赋值为0.0F; double初始化自动赋值为0.0D; char初始化自动赋值为空 boolean初始化自动赋值为FALSE; 引用类型初始化自动赋值为NULL;
Java匿名对象:每次 new 都相当于开辟了一个新的对象,并开辟了一个新的物理内存空间。如果一个对象只需要使用唯一的一次,就可以使用匿名对象,匿名对象还可以作为实际参数传递,匿名对象就是没有明确的给出名字的对象,是对象的一种简写形式。一般匿名对象只使用一次,而且匿名对象只在堆内存中开辟空间,而不存在栈内存的引用。
Student a= new Student();
a.showInfo();
//匿名对象
new Student().showInfo();
4.6方法的重载
重载:在同一个类中,允许存在一个以上的同名方法,只需要他们的参数个数或者参数类型不同即可。
public int add(int x,int y){
return x+y;
}
public float add(float x,float y){
return x+y;
}
public int add(int x,int y,int z){
return x+y+z;
}
4.7包package和引用import
在Java中包的概念和文件的概念相似。
包里边还可以建包,包可以有多级目录,用.来指明包的层级。
包名通常小写,类名首字母通常大写。
为了使用定义在不同包中的java类,需要用import语句来引入指定包层次下所需要的类或者全部类(.*)。
注意:
import语句出现在package语句之后,类定义之前
可以使用import lee.*语句,导入lee包下的所有类,但是lee包下sub包类中的类不会被导入
4.8面向对象的特征之一:封装和隐藏
对不能随意让使用者调用的属性进行封装和隐藏 讲这些属性设置为private私有,在设置public公共方法设置或取得属性setXXX(),getXXX()。
package study;
public class Test {
public static void main(String[] args) {
class Person{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void printAge(){
System.out.println(this.age);
}
}
Person person=new Person();
person.setAge(20);
person.printAge();
}
}
4.9四种访问修饰符
对于class的修饰符只能使用public和default
public类可以在任何地方被访问
default类只能被同一个包内的类访问
4.10类的成员之三:构造器(构造方法)
构造器的特征:
1.它具有与类相同的名称
2.他不声明返回值的类型。(与声明void不同)
3.不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值。
构造器的作用:创建对象;给对象初始化
构造器语法格式:
修饰符 类名(参数列表){
初始化语句;
}
根据参数不同,构造器可以分为如下两类:
隐式无参构造器(系统默认提供)
显式定义一个或多个构造器(无参、有参)
注意:
1.java语言中,每个类都至少有一个构造器
2.默认构造器的修饰符与所属类的修饰符一致
3.一旦显式定义了构造器,则系统不再提供默认构造器
4.一个类可以创建多个重载的构造器
5.父类的构造器不可以被子类继承
6.构造器方法可以重载
package study;
public class Person {
String name;
int age;
public Person() {
}
public Person(String name) {
this.name = name;
}
public Person(int age) {
this.age = age;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
4.11关键字——this
1.this在方法内部使用,即这个方法所属对象的引用
2.this在构造器内部使用,即表示这个构造器正在初始化的对象
this表示当前的对象,可以调用类的属性、方法和构造器
this()可以调用构造器
this()等同调用无参构造器
this(1)等同调用一个参数的构造器
this(2)等同调用两个参数的构造器
4.12JavaBean
javabean是一种Java语言写成的可重用组件
所谓javabean,是指符合如下标准的Java类:
1.类是公共的
2.有一个无参的公共的构造器
3.有属性,属性一般私有、有对应的get、set方法
用户可以使用javabean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以
通过内部的JSP页面、servlet、其他javabean、applet程序或者应用来使用这些对象。用户可以认为javabean提供了一种随时随
地的复制和粘贴的功能,而不用关系任何的改变。
package study;
public class Person {
private String name;
private int age;
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
鼠标右键 source generate getters and setters 自动生成set、get方法