JavaSe总结-07--面向对象(2)

07.01 成员变量和局部变量的区别
07.02 方法的形式参数是类名的调用
07.03 匿名对象的概述和应用
07.04 封装的概述
07.05 封装的好处和设计原则
07.06 private关键字的概述和特点
07.07 private的应用标准案例
07.08 this关键字的概述和应用
07.09 this关键字的内存图解
07.10 标准的手机类代码及其测试
07.11 构造方法概述和格式
07.12 构造方法的重载及注意事项
07.13 成员方法的分类及使用
07.14 一个标准学生类的代码及测试
07.15 一个标准的手机的代码及测试
07.16 创建对象做了哪些事情
07.17 什么时候定义成员变量
07.18 长方形案例练习
07.19 员工类案例练习
07.20 实现加减乘除并测试
07.21 static关键字的引入
07.22 static关键字的特点
07.23 static的内存图解
07.24 static的注意事项
07.25 静态变量和成员变量的区别
07.26 main方法的格式详细解释


07.01 成员变量和局部变量的区别

1.在类中的位置不同

成员变量    类中方法外

局部变量    方法内或者方法声明上

2.在内存中的位置不同

成员变量   堆内存

局部变量   栈内存

3.生命周期不同

成员变量   随着对象的存在而存在,随着对象的消失而消失

局部变量   随着方法的调用而存在,随着方法的调用完毕而消失

4.初始化值不同

成员变量   有默认的初始化值

局部变量   没有默认的初始化值,必须先定义,赋值,才能使用。

07.02 方法的形式参数是类名的调用

例:

复制代码
 1 class Demo
 2 {
 3     public static void main(String[] args)
 4     {
 5         //创建学生对象
 6         Student s = new Student();
 7         StudentDemo sd = new StudentDemo();
 8         sd.method(s);
 9     }
10 }
11 class StudentDemo
12 {
13     //形式参数是引用类型
14     public void method(Student s)
15     {
16         s.show();
17     }
18 }
19 class Student
20 {
21     public void show()
22     {
23         System.out.println("学生爱学习");
24     }
25 }
复制代码

07.03 匿名对象的概述和应用

匿名对象:就是没有名字的对象。是对象的一种简化表示形式

匿名对象的两种使用情况:

1.对象调用方法仅仅一次的时候

2.作为实际参数传递

例:

复制代码
 1 class Demo
 2 {
 3     public static void main(String[] args)
 4     {
 5         //匿名对象调用方法
 6         new Student().show();
 7     }
 8 }
 9 class Student
10 {
11     public void show()
12     {
13         System.out.println("学生爱学习");
14     }
15 }
复制代码

匿名对象调用完毕就是垃圾,垃圾回收器会在适当的时间回收,提高内存的使用效率

07.04 封装的概述

封装概述:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

例:

复制代码
 1 class Student
 2 {
 3     String name;
 4     //将age私有,只能在Student类中访问
 5     private int age; 
 6 
 7     //提供对外访问的方法获取age的值
 8     public int getAge()
 9     {
10         return age;
11     }
12     //提供对外访问的方法,并可以对传入的a的值进行判断,满足条件则赋值给age,不满足则不赋值
13     public void setAge(int a)
14     {
15         age = a;
16     }
17     public void show()
18     {
19         System.out.println("姓名:"+name+"   "+"年龄:"+age);
20     }
21 }
复制代码

07.05 封装的好处和设计原则

封装好处:

1.隐藏实现细节,提供公共的访问方式

2.提高了代码的复用性

3.提高安全性

封装原则:将不需要对外提供的内容都隐藏起来。把属性隐藏,提供公共方法对其访问。

07.06 private关键字的概述和特点

private关键字:是一个权限修饰符。可以修饰成员(成员变量和成员方法),被private修饰的成员只在本类中才能访问。

private最常见的应用:

1.把成员变量用private修饰

2.提供对应的getXxx()/setXxx()方法

07.07 private的应用标准案例

复制代码
 1 class Demo
 2 {
 3     public static void main(String[] args)
 4     {
 5         Student s = new Student();
 6         //给成员变量赋值
 7         s.setName("小强");
 8         s.setAge(25);
 9 
10         System.out.println(s.getName()+":"+s.getAge());
11     }
12 }
13 class Student
14 {
15     private String name;
16     //将age私有,只能在Student类中访问
17     private int age; 
18 
19     //提供对外访问的方法获取name的值
20     public String getName()
21     {
22         return name;
23     }
24     //提供对外访问的方法设置name的值
25     public void setName(String n)
26     {
27         name = n;
28     }
29     //提供对外访问的方法获取age的值
30     public int getAge()
31     {
32         return age;
33     }
34     //提供对外访问的方法设置age的值
35     public void setAge(int a)
36     {
37         age = a;
38     }
39 }
复制代码

07.08 this关键字的概述和应用

this:代表所在类的对象引用

方法被哪个对象调用,this就代表那个对象

当局部变量隐藏成员变量时使用this

例:

复制代码
 1 class Student
 2 {
 3     private String name;
 4     //将age私有,只能在Student类中访问
 5     private int age; 
 6 
 7     //提供对外访问的方法获取name的值
 8     public String getName()
 9     {
10         return name;
11     }
12     //提供对外访问的方法设置name的值
13     public void setName(String name)
14     {
15         this.name = name;
16     }
17     //提供对外访问的方法获取age的值
18     public int getAge()
19     {
20         return age;
21     }
22     //提供对外访问的方法设置age的值
23     public void setAge(int age)
24     {
25         this.age = age;
26     }
27 }
复制代码

07.09 this关键字的内存图解

07.10 标准的手机类代码及其测试

复制代码
 1 class Demo
 2 {
 3     public static void main(String[] args)
 4     {
 5         Phone p = new Phone();
 6         System.out.println("品牌:"+p.getBrand()+" 价格:"+p.getPrice()+" 颜色:"+p.getColor());
 7         p.setBrand("小米");
 8         p.setPrice(1999);
 9         p.setColor("白色");
10         System.out.println("品牌:"+p.getBrand()+" 价格:"+p.getPrice()+" 颜色:"+p.getColor());
11     }
12 }
13 class Phone
14 {
15     private String brand;//品牌
16     private int price;//价格 
17     private String color;//颜色
18 
19     public String getBrand()
20     {
21         return brand;
22     }
23     public void setBrand(String brand)
24     {
25         this.brand = brand;
26     }
27 
28     public int getPrice()
29     {
30         return price;
31     }
32     public void setPrice(int price)
33     {
34         this.price = price;
35     }
36 
37     public String getColor()
38     {
39         return color;
40     }
41     public void setColor(String color)
42     {
43         this.color = color;
44     }
45 }
复制代码

运行结果:

品牌:null 价格:0 颜色:null
品牌:小米价格:1999 颜色:白色

07.11 构造方法概述和格式

构造方法作用概述:给对象的数据进行初始化

构造方法格式:

1.方法名与类名相同

2.没有返回值类型,连void都没有

3.没有具体的返回值

例:

07.12 构造方法的重载及注意事项

构造方法注意事项:

1.如果不提供构造方法,系统会给出默认构造方法

2.如果提供了构造方法,系统将不再提供

3.构造方法也是可以重载的

07.13 成员方法的分类及使用

方法具体划分:

根据返回值:1.有明确返回值方法    2.返回void类型的方法

根据形式参数:1.无参方法     2.带参方法

例:

复制代码
 1 class Demo
 2 {
 3     public static void main(String[] args)
 4     {
 5         Student s = new Student();
 6         String str = s.getString();
 7         System.out.println(str);
 8         s.show();
 9         s.method("小强");
10     }
11 }
12 class Student
13 {
14     private String name;
15     private int age;
16     //有明确返回值的无参方法
17     public String getString()
18     {
19         return "hello";
20     }
21     //返回void类型的无参方法
22     public void show()
23     {
24         System.out.println("show run");
25     }
26     //返回void类型的带参方法
27     public void method(String name)
28     {
29         System.out.println("name:"+name);
30     }
31 }
复制代码

07.14 一个标准学生类的代码及测试

类的组成:

1.成员变量

2.构造方法[无参构造方法 / 带参构造方法]

3.成员方法[getXxx() / setXxx()]

给成员变量赋值的方式

1.无参构造方法 + setXxx()

2.带参构造方法

复制代码
 1 /*
 2 学生类:
 3         成员变量:name,age
 4         构造方法:无参,带两个参
 5         成员方法:getXxx()/setXxx()
 6         show():输出该类的所有成员变量值
 7             
 8     给成员变量赋值:
 9         A:setXxx()方法
10         B:构造方法
11         
12     输出成员变量值的方式:
13         A:通过getXxx()分别获取然后拼接
14         B:通过调用show()方法搞定
15 */
16 //测试类
17 class Demo
18 {
19     public static void main(String[] args)
20     {
21         //方式1给成员变量赋值
22         //无参构造+setXxx()
23         Student s1 = new Student();
24         s1.setName("小明");
25         s1.setAge(27);
26         //输出值
27         System.out.println(s1.getName()+"---"+s1.getAge());
28         System.out.println("----------------------------");
29         
30         //方式2给成员变量赋值
31         Student s2 = new Student("小强",30);
32         s2.show();
33     }
34 }
35 
36 class Student 
37 {
38     //姓名
39     private String name;
40     //年龄
41     private int age;
42     
43     //构造方法
44     public Student() 
45     {
46     }
47     
48     public Student(String name,int age) 
49     {
50         this.name = name;
51         this.age = age;
52     }
53     
54     public String getName() 
55     {
56         return name;
57     }
58     
59     public void setName(String name) 
60     {
61         this.name = name;
62     }
63     
64     public int getAge() 
65     {
66         return age;
67     }
68     
69     public void setAge(int age) 
70     {
71         this.age = age;
72     }
73     
74     //输出所有的成员变量值
75     public void show() 
76     {
77         System.out.println(name+"---"+age);
78     }
79 }
复制代码

07.15 一个标准的手机的代码及测试

复制代码
 1 //测试类
 2 class Demo
 3 {
 4     public static void main(String[] args)
 5     {
 6         //创建对象
 7         Phone p = new Phone();
 8         
 9         //给成员变量赋值
10         p.setBrand("小米");
11         p.setPrice(2299);
12         p.setColor("白色");
13         
14         //获取值
15         System.out.println(p.getBrand()+"---"+p.getPrice()+"---"+p.getColor());
16     }
17 }
18 
19 //定义手机类
20 class Phone
21 {
22     //品牌
23     private String brand;
24     //价格
25     private int price;
26     //颜色
27     private String color;
28     
29     //无参构造方法
30     public Phone() 
31     {
32     }
33     
34     //getXxx()和setXxx()方法
35     public String getBrand() 
36     {
37         return brand;
38     }
39     public void setBrand(String brand) 
40     {
41         this.brand = brand;
42     }
43     
44     public int getPrice() 
45     {
46         return price;
47     }
48     public void setPrice(int price)
49     {
50         this.price = price;
51     }
52     
53     public String getColor() 
54     {
55         return color;
56     }
57     public void setColor(String color) 
58     {
59         this.color = color;
60     } 
61 }
复制代码

07.16 创建对象做了哪些事情

Student s = new Student();在内存中做了哪些事情?

1.加载Student.class文件进内存

2.在栈内存为s开辟空间

3.在堆内存为学生对象开辟空间

4.对学生对象的成员变量进行默认初始化

5.对学生对象的成员变量进行显示初始化

6.通过构造方法对学生对象的成员变量赋值

7.学生对象初始化完毕,把对象地址赋值给s变量

07.17 什么时候定义成员变量

如果这个变量是用来描述这个类的信息的,那么,该变量就应该定义为成员变量。变量的范围越小越好,因为能及时的被回收。

07.18 长方形案例练习

定义一个长方形类,定义求周长和面积的方法,然后定义一个测试类Demo,进行测试。

复制代码
 1 /*
 2 成员变量:长,宽
 3 成员方法:
 4          求周长:(长+宽)*2;
 5          求面积:长*宽
 6 */
 7 import java.util.Scanner;
 8 class ChangFangXing 
 9 {
10     //长方形的长
11     private int length;
12     //长方形的宽
13     private int width;
14     
15     public ChangFangXing()
16     {
17     }
18     
19     //仅仅提供setXxx()即可
20     public void setLength(int length) 
21     {
22         this.length = length;
23     }
24     
25     public void setWidth(int width) 
26     {
27         this.width = width;
28     }
29     
30     //求周长
31     public int getZhouChang() 
32     {
33         return (length + width) * 2;
34     }
35     
36     //求面积
37     public int getArea() 
38     {
39         return length * width;
40     }
41 }
42 
43 //测试类
44 class Demo
45 {
46     public static void main(String[] args)
47     {
48         //创建键盘录入对象
49         Scanner sc = new Scanner(System.in);
50         
51         System.out.println("请输入长方形的长:");
52         int length = sc.nextInt();
53         System.out.println("请输入长方形的宽:");
54         int width = sc.nextInt();
55         
56         //创建对象
57         ChangFangXing cfx = new ChangFangXing();
58         //先给成员变量赋值
59         cfx.setLength(length);
60         cfx.setWidth(width);
61         
62         System.out.println("周长是:"+cfx.getZhouChang());
63         System.out.println("面积是:"+cfx.getArea());
64     }
65 }
复制代码

07.19 员工类案例练习

复制代码
 1 /*
 2 成员变量:员工编号,姓名,年龄
 3 构造方法:无参构造方法
 4 成员方法:
 5          getXxx()/setXxx();
 6          show();
 7 */
 8 
 9 class Employee 
10 {
11     //员工编号
12     private String employeeId;
13     //姓名
14     private String name;
15     //年龄
16     private int age;
17     
18     //构造方法
19     public Employee() 
20     {
21     }
22     
23     //getXxx()/setXxx()
24     public String getEmployeeId() 
25     {
26         return employeeId;
27     }
28     
29     public void setEmployeeId(String employeeId) 
30     {
31         this.employeeId = employeeId;
32     }
33     
34     public String getName() 
35     {
36         return name;
37     }
38     
39     public void setName(String name) 
40     {
41         this.name = name;
42     }
43     
44     public int getAge() 
45     {
46         return age;
47     }
48     
49     public void setAge(int age) 
50     {
51         this.age = age;
52     }
53     
54     //显示所有成员信息的方法
55     public void show() 
56     {
57         System.out.println("员工编号:"+employeeId+"  姓名:"+name+"  年龄:"+age);
58     }
59 }
60 
61 //测试类
62 class Demo
63 {
64     public static void main(String[] args)
65     {
66         //创建对象
67         Employee e = new Employee();
68         
69         //给成员变量赋值
70         e.setEmployeeId("ID8899");
71         e.setName("旺财");
72         e.setAge(18);
73         
74         //获取数据
75         //System.out.println(e.getEmployeeId()+"---"+e.getName()+"---"+e.getAge());
76     
77         //使用show方法
78         e.show();
79     }
80 }
复制代码

07.20 实现加减乘除并测试

复制代码
 1 import java.util.Scanner;
 2 class MyMath 
 3 {
 4     //加法功能
 5     public int add(int a,int b) 
 6     {
 7         return a + b;
 8     }
 9     
10     //减法功能
11     public int sub(int a,int b) 
12     {
13         return a - b;
14     }
15     
16     //乘法功能
17     public int mul(int a,int b)
18     {
19         return a * b;
20     }
21     
22     //除法功能
23     public int div(int a,int b) 
24     {
25         return a / b;
26     }
27 }
28 
29 //测试类
30 class Demo
31 {
32     public static void main(String[] args)
33     {
34         //创建键盘录入对象
35         Scanner sc = new Scanner(System.in);
36         
37         System.out.println("请输入第一个操作数:");
38         int num1 = sc.nextInt();
39         System.out.println("请输入第二个操作数:");
40         int num2 = sc.nextInt();
41         
42         //创建MyMath对象,并使用
43         MyMath mm = new MyMath();
44         
45         System.out.println(num1+"+"+num2+"="+mm.add(num1,num2));
46         System.out.println(num1+"-"+num2+"="+mm.sub(num1,num2));
47         System.out.println(num1+"*"+num2+"="+mm.mul(num1,num2));
48         System.out.println(num1+"/"+num2+"="+mm.div(num1,num2));
49     }
50 }
复制代码

运行结果:

复制代码
请输入第一个操作数:
8
请输入第二个操作数:
2
8+2=10
8-2=6
8*2=16
8/2=4
复制代码

07.21 static关键字的引入

例:

复制代码
 1 class Person
 2 {
 3     String name;
 4     //使用static修饰的数据称为对象的共享数据
 5     static String country = "中国";
 6     public void show()
 7     {
 8         System.out.println("姓名:"+name+"  国家:"+country);
 9     }
10 }
11 
12 class Demo
13 {
14     public static void main(String[] args)
15     {
16         Person p1 = new Person();
17         p1.name = "小明";
18         p1.show();
19 
20         Person p2 = new Person();
21         p2.name = "小红";
22         p2.country = "美国";
23         p2.show();
24         p1.show();
25 
26     }
27 }
复制代码

运行结果:

姓名:小明  国家:中国
姓名:小红  国家:美国
姓名:小明  国家:美国

07.22 static关键字的特点

1.static是一个修饰符,用于修饰成员(成员变量和成员函数)

2.static修饰的成员被所有的对象共享

3.static优先于对象存在,因为static成员随着类的加载就已经存在了

4.static修饰的成员可以被对象调用,也可以直接被类名调用,格式为:类名.静态成员

5.static修饰的数据是共享数据,对象中存储的是特有数据

07.23 static的内存图解

07.24 static的注意事项

1.在静态方法中是没有this关键字的

2.静态方法只能访问静态的成员变量和静态的成员方法

3.主函数是静态的,如果要在主函数中调用非静态成员可以创建一个对象来调用

07.25 静态变量和成员变量的区别

1.所属不同

静态变量属于类,所以也称为为类变量

成员变量属于对象,所以也称为实例变量(对象变量)

2.内存中位置不同

静态变量存储于方法区的静态区

成员变量存储于堆内存

3.内存出现时间不同

静态变量随着类的加载而加载,随着类的消失而消失

成员变量随着对象的创建而存在,随着对象的消失而消失

4.调用不同

静态变量可以通过类名调用,也可以通过对象调用

成员变量只能通过对象名调用

07.26 main方法的格式详细解释

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值