面向对象三条主线:
1.Java类及类的成员:属性、方法、构造器;代码块、内部类
2.面向对象的三大特征:封装类、继承性、多态性、(抽象性)
3.其他关键字:this、super、static、final、abstract、interface、package、import
类和对象的使用
package com.rain.java;
public class PersonTest {
public static void main(String[] args) {
// 创建Person类的对象
Person p1 = new Person();
//调用对象的结构:属性、方法
//调用属性:“对象.属性”
p1.name="Tom";
p1.isMale=true;
System.out.println(p1.name);
//调用方法:“对象.方法”
p1.eat();
p1.sleep();
p1.talk("Chinese");
}
}
class Person{
//属性
String name;
int age;
boolean isMale;
//方法
public void eat() {
System.out.println("人可以吃饭");
}
public void sleep() {
System.out.println("人可以睡觉");
}
public void talk(String language) {
System.out.println("人可以说话,使用的是:"+language);
}
}
创建Java自定义类
步骤:
- 定义类(考虑修饰符、类名)
- 编写类的属性(考虑修饰符、属性类型、属性名、初始化值)
- 编写类的方法(考虑修饰符、返回值类型、方法名、形参等)
类的成员之一属性
- 语法格式:
修饰符 数据类型 属性名 = 初始化值 ;
说明1: 修饰符
常用的权限修饰符有:private、缺省、protected、public
其他修饰符:static、final (暂不考虑)
说明2:数据类型
任何基本数据类型(如int、Boolean) 或 任何引用数据类型。
说明3:属性名
属于标识符,符合命名规则和规范即可。
举例:
public class Person{
private int age; //声明private变量 age
public String name = “Lila”; //声明public变量 name
}
- 成员变量和局部变量
在方法体外,类体内声明的变量称为成员变量。
在方法体内部声明的变量称为局部变量。
- 对象属性默认初始化赋值(成员变量)
局部变量必须显式赋值。
类的成员之二方法
方法的声明格式:
修饰符 返回值类型 方法名(参数类型 形参1, 参数类型 形参2, ….){
方法体程序代码
return 返回值;
}
- 修饰符:public,缺省,private, protected等
返回值类型:- 没有返回值:void。
- 有返回值,声明出返回值的类型。与方法体中“return 返回值”搭配使用
- 方法名:属于标识符,命名时遵循标识符命名规则和规范,“见名知意”
- 形参列表:可以包含零个,一个或多个参数。多个参数时,中间用“,”隔开
- 返回值:方法在执行完毕后返还给调用它的程序的数据。
匿名对象的使用
package com.rain.java;
public class InstanceTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Phone p=new Phone();
System.out.println(p);
p.sendEmail();
p.playGame();
//匿名对象
new Phone().sendEmail();
new Phone().playGame();
//创建的对象没有显示的赋给一个变量名,即为匿名对象
//匿名对象一次只调用一次
new Phone().price=2000;
new Phone().showPrice();
//***************************
//一般这样用
PhoneMall mall=new PhoneMall();
//mall.show(p);
//匿名对象的使用
mall.show(new Phone());
}
}
class PhoneMall{
public void show(Phone phone)
{
phone.sendEmail();
phone.playGame();
}
}
class Phone{
double price;//价格
public void sendEmail() {
System.out.println("发邮件");
}
public void playGame() {
System.out.println("玩游戏");
}
public void showPrice() {
System.out.println("手机价格为:"+price);
}
}
方法–方法的重载
重载的概念
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
重载的特点:
与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型)。调用时,根据方法参数列表的不同来区别。
重载示例:
//返回两个整数的和
int add(int x,int y){return x+y;}
//返回三个整数的和
int add(int x,int y,int z){return x+y+z;}
//返回两个小数的和
double add(double x,double y){return x+y;}
方法–可变形参的方法
- 声明格式:方法名(参数的类型名 …参数名)
- 可变参数:方法参数部分指定类型的参数个数是可变多个:0个,1个或多个
- 可变个数形参的方法与同名的方法之间,彼此构成重载
- 可变参数方法的使用与方法参数部分使用数组是一致的
- 方法的参数部分有可变形参,需要放在形参声明的最后
- 在一个方法的形参位置,最多只能声明一个可变个数形参
package com.rain.java;
public class MethodArgsTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
MethodArgsTest test=new MethodArgsTest();
test.show(12);
test.show("hello");
}
public void show(int i) {
}
public void show(String s) {
System.out.println("show(String)");
}
public void show(String ... strs) {
System.out.println("show(String...strs)");
}
}