java学习之面向对象

面向对象

面向过程:我应该干什么 重在过程  事务执行者

  挑选一个电脑(台式)

 1.挑一个CPU

 2.挑一个主板

 3.挑一个显卡

 4.挑一个显示器

面向对象:重点在对象 我该找谁干什么  指挥者

找一个懂电脑的人 帮你去买电脑

面向对象的好处:

 1.将复杂问题 简单化

 2.从事务的执行者 转化为 事务的指挥者

 3.更贴近人的思维

类和对象

 java中 最基本的单位 就是类

 类:对抽象事物的描述

 对象:用类创建出来的就是对象(具体的事物)

public class Demo01 {

public static void main(String[] args) {

//创建一个学生类的对象

//类名 对象名=初值;

//成员变量会随对象一起进入堆中

//new 一次 就在堆中 开辟一块内存空间

//Student student 对象的引用(保存的对象的地址)

Student stu =new Student();

Student stu1= stu;

//使用 对象名,属性名 进行赋值和取值

stu.name="张三";

stu.age=22;

stu.gender="男";

//调用成员方法 对象名.方法名()

stu.eat();

stu.playGame("刺激战场");

//那个对象调用该方法 打印的就是那个对象 属性

stu.sayHi();

}

}

class Student{

//属性(成员变量 实例变量)

//书写位置:类中 方法外

//行为(方法 函数) 跟函数一样 就static先不写

//书写位置:类中

String name;

int age;

String gender;

//成员方法/实例方法

public void eat() {

System.out.println("吃饭");

}

public void sleep() {

System.out.println("睡觉");

}

public void playGame(String game) {

System.out.println("打"+game);

}

//介绍自己的方法

public void sayHi() {

System.out.println("姓名"+name);

System.out.println("年龄"+age);

System.out.println("性别"+gender);

}

}




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

 1.书写位置

 成员变量:类中 方法外

 局部变量:方法中或方法上

 2.在内存中表现

 成员变量:堆内存中

 局部变量:栈内存中

 3.生命周期

 成员变量:随着对象进入堆内存中创建 随着对象销毁而销毁

 局部变量:随着方法的调用而入栈 随着方法的结束而销毁0

 4.作用域

 成员变量:整个类中

 局部变量:方法中

 5.初始值

 成员变量:跟堆内存一样 默认初始值

 局部变量:默认没有初值 不给初值 编译报错

class Car{

//声明成员变量的时候可以给初值

String name;//车名

String displacement;//排气量

String color;//颜色

public void startCar(int a) {

//在方法中的变量 是局部变量

//在方法上的变量 是局部变量

int num=10;

//就近原则

String color="绿色";

System.out.println(color);

System.out.println("开车");

}

public void sayHi() {

System.out.println(name+""+displacement+""+color);

}

}

参数引用

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();

}

}



匿名对象

匿名对象:没有名字的对象

  1.在方法传参数的时候使用

  2.只调用一下方法(不赋值的情况下)

public class Demo05 {

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对象 并赋值

//将重复代码 抽成一个方法

Person p1=new Person();

p1.name="wanglong";

p1.age=16;

p1.sayHi();

Person p2=new Person();

setNameAndAge(p2, "menglong", 8);

//使用匿名对象 当方法参数

//好处:减少代码量 使用方便

setNameAndAge(new Person(),"kun",20);

// 匿名对象 也是对象 也可以赋值属性 调用成员方法

new Person().name="xin";

new Person().age=30;

new Person().sayHi();

//只调用方法可以使用匿名对象

//测试方法时 可能会使用

new Person().fun();

}

}

public class Person {

String name;

int age;

//介绍自己的方法

public void sayHi() {

System.out.println(name+" "+age);

}

public void fun() {

System.out.println("我是3g包下的fun方法");

}

}


封装

  写方法就是封装一种

  相当于隐藏代码的实现和属性 不能随意修改

  需要开放访问方式(方法) 获取 修改

  好处:

  1.增加代码的复用性

  2.提高代码的安全性


  关键字(权限修饰符)

  private 私有的

  被private修饰的属性 只能本类中访问


public class Demo06 {

public static void main(String[] args) {

Phone phone=new Phone();

//测试set get方法

phone.setPhoneName("vivo");

phone.setColor("红色");

System.out.println(phone.getPhoneName());

System.out.println(phone.getColor());

phone.sayHi();

}

}

class Phone{

//java bean 规范(java 实体类创建出来的对象)

//1.声明成员变量 都需要 私有化

//2.给每一个成员变量提供 set/get方法

//3.必须提供 无参的构造方法

private String phoneName;

String color;

//对外开放 访问方式

//获取方法

public String getPhoneName() {

return phoneName;

}

//修改方法(设置方法)

public void setPhoneName(String phoneName) {

this.phoneName=phoneName;

}

public String getColor() {

return color;

}

public void setColor(String color) {

//就近原则

//关键字 this 代表的是 本类的对象

//this.成员变量 获取 本类 的成员变量

//this.成员变量="哈哈";给本类的成员变量赋值

//this.成员方法 调用本类的成员方法

//谁调用了这个方法 谁就是this

this.color=color;

}

public void sayHi() {

System.out.println(phoneName+""+color);

}

}


构造方法

构造方法:对 对象的成员变量 进行初始化

  关键字 返回值类型 方法名(参数列表){

   代码

  }

        

public class Demo07 {

public static void main(String[] args) {

//创建一个pen对象

//构造方法 是系统帮你调的

//只要你创建对象 系统就会帮你调用构造方法

//构造方法 只会执行一遍

Pen p=new Pen();

p.sayHi();

//测试有参的构造方法

//你传参数 系统就会去找你有参的构造方法调用

Pen p1=new Pen("钢笔", "绿色");

p1.sayHi();

}

}


class Pen{

//类中的书写顺序

//1.成员变量

//2.构造方法

//3.成员方法

//4.set/get方法

private String name;

private String color;

public String getName() {

return name;

}

public void setName(String name) {

this.name=name;

}

public String getColor() {

return color;

}

public void setColor(String color) {

this.color=color;

}

  构造方法(无参)

public Pen() {

//初始化成员变量(给成员变量赋值)

this.name="圆珠笔";

this.color="绿色";

System.out.println("我是pen类的无参构造方法");

}

//有参的构造方法(构造方法的重载)

//为了在创建对象的同时给成员变量赋值

public Pen(String name,String color) {

this.name=name;

this.color=color;

System.out.println("我是有参的构造方法");

}

//介绍自己的方法

public void sayHi() {

//使用this 可以区分成员变量和局部变量

String name ="aaa";

System.out.println(this.name+" "+this.color);

}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值