1.面向对象:
面向过程:亲历亲为处理每个过程.
面向对象:需要实现某个功能时,不关心具体步骤,只关心结果,找一个具有该功能的类,实现操作.
特点:
1.符合思维习惯.
2.将复杂事情简单化.
3.角色发生转换,编程者称为指挥者
三大特征: 封装 继承 多态
类:类是对现实事物的抽象描述. 现实事物都具备属性和功能 ,可以使用类的成员变量描述事物的属性 使用类的
成员方法描述事物的功能
对象:根据类的描述 创建出来的具体的实例
2.类的定义:
定义类的格式
public class 类 {
数据类型 属性名;
数据类型 属性名;
修饰符 返回值类型 方法名(参数){
方法体
return 返回值;
}
}
修饰符:只写public 不写static
Demo:
public class Person {
String name;
int age;
public void eat(){
System.out.println(name+"吃");
}
public void sleep(){
System.out.println(name+"睡");
}
public void hitBeanBean(){
System.out.println("敲代码了!");
}
}
Test:
/*
测试Person类
引用数据类型
1.导包
同一包下 不需要
2.定义变量并赋值(创建对象)
数据类型 对象名 = new 数据类型();
3.访问属性 调用方法
对象名.属性名;
对象名.方法名(参数);
*/
public class Test_Person {
public static void main(String[] args) {
Person p = new Person();
p.name = "柳岩";
p.age = 38;
System.out.println(p.name);
System.out.println(p.age);
p.eat();
p.sleep();
p.hitBeanBean();
System.out.println("----------------------------");
Person p2 = new Person();
p2.name = "唐嫣";
p2.age = 18;
p2.age = 28;
System.out.println(p2.name);
System.out.println(p2.age);
p2.eat();
p2.sleep();
p2.hitBeanBean();
}
}
手机类:
public class Phone {
String brand; //品牌
String color;
double price;
String ownerName; //机主姓名
String ownerTel; //机主的手机号
public void call(){
System.out.println("打电话了");
}
public void call(String name){
System.out.println("给"+name+"打电话了");
}
public void sendMessage(){
System.out.println("发短信了");
}
public void show(){
System.out.println("品牌:"+brand);
System.out.println("颜色:"+color);
System.out.println("价格:"+price);
}
public void set(String b,String c,double p){
brand = b;
color = c;
price = p;
}
public String getInfo(){
return ownerName+":"+ownerTel;
}
}
调用手机类完成功能:
public class Test {
public static void main(String[] args) {
Phone p = new Phone();
p.brand = "苹果";
p.color = "黑色";
p.price = 250.0;
p.ownerName = "柳岩";
p.ownerTel = "13800000000";
p.call();
p.sendMessage();
p.call("唐嫣");
p.show();
System.out.println("--------------");
p.set("华为","白色",300.0);
p.show();
System.out.println("-------------");
String info = p.getInfo();
System.out.println(info);
}
}
3.成员变量与局部变量
成员变量:定义在类中方法外的变量
局部变量:定义在方法内的变量
1.成员变量与局部变量的区别:
定义的位置不同
成员变量:类中方法外
局部变量:方法内
作用域不同
成员变量在整个类中都生效
局部变量只在当前方法中 代码块中生效
默认值不同
成员变量有默认值
局部变量没有默认值不赋值 不能使用
内存中的位置不同
成员变量随着对象进入到堆内存中
局部变量随着方法进入到栈内存中
生命周期不同
成员变量随着对象的产生而产生 随着对象的销毁而销毁
局部变量随着方法的调用而产生 随着方法的弹栈而销毁
2.tips:this可以区分成员变量和局部变量 但是这只是它表现出来的功能
其功能本质 this只能在方法中使用 代表当前对象的引用
谁调用方法 this就代表谁
练习:
定义一个程序员类
属性
姓名
年龄
工资 salary
奖金 bonus
方法
工作 写代码
计算薪资 工资+奖金
展示所有属性的方法
get/set方法
定义测试类
创建Coder对象
调用方法
类:
public class Coder {
private String name;
private int age;
private double salary;
private double bonus;
public void work(){
System.out.println("写代码了");
}
//计算薪资
public double getMoney(){
return salary+bonus;
}
//展示所有属性
public void show(){
System.out.println("姓名:"+name);
System.out.println("年龄:"+age);
System.out.println("工资:"+salary);
System.out.println("奖金:"+bonus);
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void setSalary(double salary){
this.salary = salary;
}
public double getSalary(){
return salary;
}
public void setBonus(double bonus){
this.bonus = bonus;
}
public double getBonus(){
return bonus;
}
}
测试类:
public class Test_Coder {
public static void main(String[] args) {
Coder c = new Coder();
c.setName("柳岩");
c.setAge(38);
c.setSalary(15000.0);
c.setBonus(20000.0);
c.show();
c.work();
double money = c.getMoney();
System.out.println(money);
}
}
4.JavaBean:
JavaBean的概念:
如果一个类具备 私有的成员变量 空参数构造方法 get/set方法 就可以称这个类是一个JavaBean类
面向对象 三大特征
封装,继承,多态
5.包的声明和访问:
1.包的声明
package 包名.包名.包名;
tips:
声明class文件所在的位置 idea帮我们自动生成
包的定义一般都是公司域名的反写 baidu.com com.baidu
必须全部小写 数字不能开头
2.包的访问
1.带包名访问 全路径访问
2.两种可以可以省略包名
同一个包下的 可以直接访问
java.lang包下的类 可以直接访问不带包名
3.导包访问
import 包名.包名.类名;
tips:导包必须写在包的声明的下面,如果访问不同包下 相同类名的类 只有一个类可以导包 另一个必须类全名访问