一、面向对象概述
1.1 对象:世界万物皆对象。
类:同一类事物的统称,是这类对象的统称。类就是对象的设计图。
例:面向对象解决大雁南飞。
1.抽出对象——大雁
2.识别对象的属性——静态属性(翅膀、羽毛)
3.识别对象的动态行为——动态属性(飞行,觅食)
4.根据属性与行为提供方法
1.2 面向对象的三大特征
1.封装:将对象的属性和行为封装起来,其载体就是类。
2.继承:将有用的类保留下来,这些类有相同的属性或相同的方法,可以拿去用。
3.多态:将父类对象应用于子类的特征就是多态。
二、类
类是封装对象的属性和行为的载体。
2.1 成员变量
在Java中对象的属性也称为成员变量。成员变量的类型可以设置为Java中合法的数据类型。可以设置初始值,也可以不设置初始值。
public class People {//Java中使用class关键字来定义类,People是类的名称
String name;//定义一个String类的成员变量
int age;//定义一个int类型的成员变量
}
2.2 成员方法
在Java语言中使用成员方法对应于类的对象的行为。
语法:权限修饰符 返回值类型 方法名(参数类型 参数名){
...//方法体
return 返回值
}
若一个方法中无返回值,可以用void关键字表示。
public class domo {
public String name; // 定义一个String型的成员变量
public int id = 10;
public String getName() {// 定义一个getName的方法
int id = 0; // 局部变量
setName("Java"); // 调用类中的其他方法
return this.id + this.name; // 设置返回值
}
private void setName(String name) {// 定义一个方法
this.name = name; // 将参数值返回给类中的成员变量
}
public domo getBook() {
return this; // 返回Book类
}
}
2.3 权限修饰符
权限修饰符控制着对类和类的成员方法和成员变量
注意:1.当声明类时不使用权限修饰符时,只有一个包的类可以调用这个类的成员方法和成员变量。
2.类的权限设定会约束类成员的权限设定。
三、局部变量
局部变量:
1.在成员方法中定义一个变量,即为局部变量。
2.成员方法的一个参数也是局部变量。
局部变量是在方法被执行时创建,在方法执行结束时被销毁。局部变量在使用十恶必须进行赋值操作或被初始化,否则会出现编译错误。
int age =18;//成员变量
public void getName() {
int age=20;//局部变量
System.out.println("未赋值时的局部age值为:"+age);//20
System.out.println("未赋值时的成员age值为:"+this.age);//18
}
}
四、this关键字
当成员变量名与局部变量名相同时,可用this来表示成员变量名。
public class demo {
int age =18;//成员变量
public void getName() {
int age=20;//局部变量
this.age=age;//将局部变量赋值给成员变量
System.out.println("赋值时的局部age值为:"+age);//20
System.out.println("赋值时的成员age值为:"+this.age);//20
}
}
五、类的构造方法
在类中除了成员方法之外,还存在一种特殊类型的方法,那就是构造方法。
构造方法特点:
1.类的构造方法与类同名,并且没有返回值
2.类的构造方法可以为成员变量赋值
如果类中没有明确定义构造方法,编译器会自动创建一个不带参数的默认构造方法。
int age;
String name;
double score;
char sex;
public void demo1(int age,String name,double score,char sex) {
this.age=age;
this.name=name;
this.score=score;
this.sex=sex;
System.out.println("年龄为:"+this.age+"姓名为:"+this.name+"分数为:"+this.score+"性别为"+this.sex);
}
}
六、静态变量、常量和方法
静态成员可以在别的类中共享使用。否则需要重新创建对象。
1.被声明为static的变量、常量和方法称为静态成员
2.静态成员属于类所有,区别于个别对象,可以在本类或其他类使用类名和“.”来调用。
3.静态方法中不能使用this关键字,静态方法中不可以直接调用非静态方法
public class demo {
static final double PI =3.1415;//定义一个静态常量
static int age =18;//定义一个静态变量
final double a=3.33;//定义一个常量
int x =88;//定义一个变量
static void method1() {
System.out.println("hello,word");//定义一个静态方法
}
void method2() {
System.out.println("你好,世界");
}
}
class demo1{
double PI1=demo.PI;
//double a1=demo.a;报错了
int age1 =demo.age;
//int x1=demo.x;报错了
void method3() {
demo.method1();
//demo.method2();报错了
}
}
七、对象
Java是一门面向对象的程序设计语言,对象时由类抽象出来的。对象是相互独立的。
7.1 对象的创建
语法:Test test = new Test();
Test test = new Test(“a”);
Test:类名
test:创建Test类对象
new: 创建对象操作符
“a”:构造方法的参数
public class demo {
int age=18;
String name ="小王";
double score = 99.99;
void method() {
System.out.println("年龄:"+age+"姓名:"+name+"分数:"+score);
}
}
class demo1{
int age;
String name;
double score;
public demo1(int age,String name,double score) {
this.age=age;
this.name=name;
this.score=score;
}
void demo2() {
System.out.println("年龄:"+this.age+"姓名:"+this.name+"分数:"+this.score);
}
}
public static void main(String[] args) {
System.out.println("1.对象的创建");
demo a=new demo();
a.method();
demo1 b =new demo1(14,"尼斯达",33.00);
b.demo2();
}
7.2 对象比较
在Java语言中有两种比较对象方式,“==”与equals()方法。
==比较两个对象引用的地址是否相等。
equals()方法比较两个对象引用所指的内容是否相等。
class demo3{
int age;
public demo3(int age) {
this.age=age;
}
}
demo3 c=new demo3(333);
demo3 d=new demo3(333);
demo3 e=c;//将c引用对象赋值给e
System.out.println("e==d的结果是:"+(e==d));//false
System.out.println("c.equals(e)的结果是;"+(c.equals(e)));//true