1.什么是面向对象
面向过程:我应该干什么 重在过程 事务执行者 * 挑选一个电脑(台式) * 1.挑一个cpu Intel Core i7 * 2.挑一个主板 华硕 * 3.挑一个显卡 七彩虹 影驰 9600GT * 4.挑一个显示器
面向对象:重点在对象 我该找谁干什么 指挥者 * 找一个懂电脑的人 帮你去买电脑 * 更贴近人的思维(懒人思维)
2.面向对象的好处
面向对象的好处: * 1.把复杂的问题 简单化 * 2.从事务的执行者 转化为 指挥者 * 3.更贴近人的思维(懒人思想)
3.类与对象
类和对象 * java中 最基本的单位 就是类 * 类:对抽象事物的描述(模板) * 对象:用类创建出来的就是对象(具体的事物)
4.成员变量与局部变量的区别
成员变量 和 局部变量 区别 1.在类中位置不同:成员变量:在类中方法外。局部变量:在方法定义中或者方法声明上。 2.在内存中的位置不同:成员变量:在堆内存。 局部变量:在栈内存。 3.生命周期不同:成员变量:随着对象的创建而存在,随着对象的消失而消失。 局部变量:随着方法的调用而入栈,随着方法的调用完毕而消失。 4.作用域 : 成员变量:整个类. 局部变量:方法中. 5.初始化值不同:成员变量:跟堆内存中,有默认值初始化。局部变量:没有默认值初始化,必须定义,赋值,然后才能使用。 6.注意事项:局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
5.创建不同包下的同名类
package com.lanou3g; import com.lanou4g.Test; public class Demo03 { public static void main(String[] args) { //创建一个Person对象 Person p1 = new Person(); p1.fun(); //创建不同包下的同名类对象 //需要指定完整的包名来创建对象 //一般情况下:不建议写同名类 com.lanou4g.Person p2 = new com.lanou4g.Person(); p2.fun(); //创建不包不同名的类 Test test = new Test(); } }
6.参数是引用数据类型和数据是引用数据类型
public class Demo04 { //参数是基本数据类型 public static void fun1(int a) { System.out.println(a); a = 10; } //参数是引用数据类型 //要什么类型 就给什么类型 public static void fun2(Person p) { p.name = "刘斌"; p.age = 24; } public static void main(String[] args) { int a = 100; fun1(a); System.out.println(a); Person p1 = new Person(); p1.name = "凡鹏"; p1.age = 28; fun2(p1); p1.sayHi();//打印的是刘斌 24.因为进行的是地址的传递 } }
不多说 上图!!!

不比比 再来一张

7.匿名对象
匿名对象:没有名字的对象 * 1.在方法传参数时使用 * 2.只调用一下方法(不赋值的情况下)
public static void setNameAndAge(Person p, String name, int age) { p.name = name; p.age = age; p.sayHi(); } public static void main(String[] args) { // 创建两个对象 并赋值 // 将重复代码抽成一个方法 Person p1 = new Person(); p1.name = "wanglong"; p1.age = 16; p1.sayHi(); Person p2 = new Person(); setNameAndAge(p2, "menglomg", 18); //使用匿名对象 当方法参数 //好处:减少代码量 setNameAndAge(new Person(), "kun", 20); //匿名对象 也是对象 也可以赋值属性 调用成员方法 new Person().name = "xin"; new Person().age = 30; new Person().sayHi();//打印结果是 null 0. 因为开辟的是三块区域 //只调用方法可以使用匿名对象 //测试方法的时候可能会使用 new Person().fun(); }

8.封装
封装 * 写方法就是封装的一种 * 隐藏代码的实现和属性 不能随意修改 * 需要开发访问方式(方法) 获取 修改 * 好处: * 1.提高代码的复用性 * 2.提高代码的安全性
私有的(权限修饰符) * private 私有的 * 被private 修饰的属性 只能本类中访问
9.构造方法
构造方法:对对象的成员变量进行初始化 * 写法: * 1.没有返回值类型(连void都不用写) *2.构造方法方法名 要与 类名 完全一致
//创建一个pen对象 //构造方法 是系统帮你调用 //只要你创建对象 系统就会帮你调用构造方法 //构造方法只会执行一遍 Pen pen = new Pen(); pen.sayHi(); //测试有参的构造方法 //当你传参数 系统就会去找你有参的构造方法调用 Pen p1 = new Pen("钢笔", "绿色"); p1.sayHi();
10.创建一个标准的java bean 类
类中写什么? * 成员变量 * 无参构造方法 * 有参构造方法 * 成员方法 * set/get方法
11.一个标准的Book类示范
public class Homework { public static void main(String[] args) { Book book = new Book(); Book book2 = new Book("少年阿宾", 25); book.setName("平凡的世界"); System.out.println("我是成员方法,这本书的名字是:"+book.getName()); } } class Book{ private String name; private int price; Book(){ this.name = "小王子"; this.price = 95; System.out.println("我是Book类的无参构造方法,我的书名是:"+name+",我的价格是:"+price); } Book(String name,int price){ this.name = name; this.price = price; System.out.println("我是Book类的有参数构造方法,我的名字是:"+name+",我的价格是"+price); } public void read(){ System.out.println("我是成员方法,这本书的名字是:"+name); } public void setName(String name){ this.name = name; } public String getName(){ return name; }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221007.html原文链接:https://javaforall.net
