面向对象-匿名对象-private关键字等
面向对象的三大特征(了解)
- 封装(encapsulation)
- 继承(inheritance)
- 多态(polymorphism)
成员变量和局部变量的区别
Class Person {
String name ; //成员变量(name) 在堆内存(属于对象,对象进堆内存) 创建时存在,随对象的消失而消失 有默认初始值
public void speak(int x) { //局部变量(x,num) 在栈内存(属于方法,方法进栈内存) 调用时存在,随方法的调用结束而消失 没有默认初始值,必须定义,赋值后才能使用
int num = 10;
}
}
基本数据类型与引用数据类型
- 基本数据类型变量:byte,short,int,long,float,double,boolean,char
- 引用数据类型变量:数组,类,接口,枚举
匿名对象
-
匿名对象:没有名字的对象
-
应用场景:仅仅调用一次方法的时候(注意:多次调用的时候不合适)
-
好处:可以节省代码。当作实际参数传递
-
匿名对象是否可以调用属性并赋值?有什么意义?——————————可以调用属性,但是没有意义,因为调用后就变成了垃圾。所以如需要赋值还是用有名字的对象。
class Demo { public static void main(String[] args{ Car c1 = new Car(); // 创建有名字的对象 c1.run(); c1.run(); new Car().run(); // 匿名对象调用方法 } } class Car { String color; int num; public void run() { System.out.println("车运行"); } } /***************************************************************************/ class Demo1 { public static void main(String[] args) { Car c1 = new Car(); //有名字的对象的调用 method(c1); method(new Car()); //匿名对象可以当作参数传递 } //抽取方法提高代码的复用性 public static void method(Car cc) { cc.color = "red"; cc.num = 8; cc.run(); } } class Car { String color; int num; public void run() { System.out.println(color + "-----" + num); } }
private关键字的概述及特点
- private关键字特点
-
是一个权限修饰符
-
可以修饰成员变量和成员方法
-
被修饰的成员只能在本类中被访问
class Demo { public static void main(String[] args) { Person p1 = new Person(); p1.setName ="张三"; p1.setAge(-17); System.out.println(p1.getName() + "---------" + p1.getAge()); } } class Person { private String name; private int age; public void setName(String name) { //设置姓名 this.name = name; } public String getName() { //获取姓名 return name; } public void setAge(int age) { //设置年龄 if (age > 0 && age < 200) { this.age = age; }else { System.out.println("输入错误!"); } } public int getAge() { //获取年龄 return age; } }
-