Day13
面对过程和面对对象
什么是面向对象
回顾方法及加深
javapackage oop; //Demo01 类 public class Demo01 { //main 方法 public static void main(String[] args) { } /* * 修饰符 返回值类型 方法名(...){ * //方法体 * retur 返回值; * } * */ //return 结束方法,返回一个结果 public String sayHello(){ return "hello world"; } public int max(int a,int b){ return a>b ? a : b;//三元运算符 } }
package oop; public class Demo02 { //静态方法 static public static void main(String[] args) { //实例化这个类 new //对象类型 对象名 = 对象值 Student student = new Student(); student.say(); } // 和类一起加载的 // public static void a(){ // b();报错 // } // 类实例化之后才存在的 // public void b(){ // // } }
package oop; import com.sun.scenario.effect.impl.sw.java.JSWBlend_SRC_OUTPeer; public class Demo03 { public static void main(String[] args) { //实参和形参的类型要对应 int add = Demo03.add(1,2); System.out.println(add); } public static int add(int a,int b){ return a+b; } }
package oop; //值传递 public class Demo04 { public static void main(String[] args) { int a = 1; System.out.println(a);//1 Demo04.change(a); System.out.println(a);//1 } //返回值为空 public static void change(int a){ a = 10; } }
package oop; //引用传递:对象,本质还是值传递 public class Demo05 { public static void main(String[] args) { Person person = new Person(); System.out.println(person.name);//null Demo05.change(person); System.out.println(person.name);//dhc } public static void change(Person person){ //person是一个对象:指向的--->Person person = new Person();这是一个具体的人,可以改变属性 person.name = "dhc"; } } //定义了一个person类,有一个属性:name class Person{ String name;//null }
类与对象的关系
创建与初始化对象
package oop.demo02; //学生类 public class Student { //属性:字段 String name;//null int age;//0 //方法 public void study(){ System.out.println(this.name+"在学习"); } }
package oop.demo02; //一个项目应该只存在一个main方法 public class Application { public static void main(String[] args) { //类:抽象的,实例化 //类实例化后会返回一个自己的对象 //student对象就是一个student类的具体实例 Student xiaoming = new Student(); Student xiaohong = new Student(); xiaoming.name = "小明"; xiaoming.age = 18; System.out.println(xiaoming.name); System.out.println(xiaoming.age); } }
构造器
package oop.demo02; public class Person { //一个类即使什么都不写,它也会存在一个方法 //显示的定义构造器 String name; //实例化初始值 //1.使用new关键字,本质是在调用构造器 //2.初始化值 public Person (){ this.name = "dhc"; } //有参构造:一旦定义了有参构造,无参构造必须显示定义 public Person(String name){ this.name = name; } //快捷键 alt+insert 构造参数 } //构造器:1.和类名相同 // 2.没有返回值
package oop.demo02; //一个项目应该只存在一个main方法 public class Application { public static void main(String[] args) { //new 实例化一个对象 Person person = new Person(); System.out.println(person.name); // 类:抽象的,实例化 // 类实例化后会返回一个自己的对象 // student对象就是一个student类的具体实例 // Student xiaoming = new Student(); // Student xiaohong = new Student(); // // xiaoming.name = "小明"; // xiaoming.age = 18; // // System.out.println(xiaoming.name); // System.out.println(xiaoming.age); } }
创建对象内存分析
package oop; import oop.demo03.Pet; public class Application { public static void main(String[] args) { Pet dog = new Pet(); dog.name = "zyj"; dog.age = 18; dog.shout(); System.out.println(dog.name); System.out.println(dog.age); } }
package oop.demo03; public class Pet { public String name; public int age; //无参构造 public void shout(){ System.out.println("叫了一声"); } }
类与对象小结
1.类与对象
类是一个模板:抽象,对象是一个具体的实例
2.方法
定义,调用
3.对应的引用
引用类型:基本类型(8种)
对象是通过引用来操作的:栈--->堆
4.属性:字段Filed 成员变量
默认初始化:
数字:0 0.0
boolean:false
char:u0000
引用:null
定义:修饰符 属性类型 属性名 = 属性值
5.对象的创建和使用
必须使用new 关键字创造对象,构造器 Person dhc = new Person()
对象的属性 dhc.name
对象的方法 dhc.study()
6.类:
静态的属性 属性
动态的行为 方法