什么是面向对象
以类的方式组织代码,以对象的组织(封装)数据
封装 - 继承 - 多态
对象-具体 —— 类-抽象
设计:先有多个对象,再将对象共性抽象成类
代码:先有抽象类,再new具体对象 --先造模子然后就可以随意印姜饼人
关于对象的值传递
- 对于基本类型的实参 int/String 等 方法通过值传递不直接修改实参本身
//值传递
public class Demo02 {
public static void main(String[] args) {
int a = 1;
System.out.println(a); //1
Demo02.change(a);
System.out.println(a); //1
//change()方法并没有作用于实参a上,只有a的值作为形参传入方法中
}
public static void change(int a){
a = 10;
}
}
- 对于由类new出的对象,方法也是值传递,但形参指向具体对象,可以修改对象的属性
//引用传递,本质还是值传递,Java只有值传递 -- 在于对象+内存
public class Demo03 {
public static void main(String[] args) {
//new一个Person对象
Person person = new Person();
System.out.println(person.name);//null 默认初始化
Demo03.change(person);
System.out.println(person.name);//Ashen 修改成功
}
public static void change(Person person){
person.name = "Ashen";
//此处的person是一个对象:指向-->Person person = new Person();
//是具体的人,可以改变属性
}
}
//定义一个Person类,赋予一个属性name
class Person{
String name;
}
类的构造器
无参构造器默认为隐式定义,也可显示定义
当显示定义一个有参构造器后,相应类的无参构造器必须也显示定义
定义Person类
public class Person {
//一个类 一定存在一个与类名同名的方法 Person() --> 构造器
//快捷键alt+insert可快速生成构造器
//1.方法名与类名相同 2.无任何返回值
public Person(){ //显示定义无参构造
//作用1:使用new关键字,本质是在调用构造器
//作用2:初始化对象的属性
this.name = "zz";
}
//一旦定义有参构造,无参构造必须显示定义
public Person(String name){ //有参构造
this.name = name;
}
public Person(String name, int age){
this.name = name;
this.age = age;
}
String name;
int age;
}
实例化Person类
public class Application {
public static void main(String[] args) {
//new 实例化一个对象
Person person = new Person();
System.out.println(person.name); //zz
Person Wu = new Person("zxc");
System.out.println(Wu.name); //zxc
}
}
标签:name,person,Person,面向对象,new,public,String
From: https://www.cnblogs.com/Ashen-/p/17018004.html