黑马程序员——Jave面向对象一

------- android培训java培训、期待与您交流! ----------


1.面向对象描述:
是相对于面向过程而言的一种编程思想,是基于面向过程的。
面向过程:以过程为主。
面向对象:以结果为主,找对象做事情。

面向对象的思想特点:
A.是一种更符合人们思考习惯的思想。
B.把复杂的给简单化。
C.让我们的角色发生改变。从执行者成为指挥者。

举例:
   吃饭:
面向过程:自己先去买米买菜,回家后洗米洗菜,还得做...
面向对象:去饭店或是找老婆


2.怎么样才算面向对象?
步骤:
A.分析有哪些类。
B.分析类应该有什么。
C.分析类与类之间的关系。
举例:
把大象装进冰箱。
面向过程:
A.开冰箱门
B.把大象装进去
C.关冰箱门
代码体现:
class Test{
public static void main(String[] args){
/*
System.out.println("开冰箱门");
System.out.println("把大象装进去");
System.out.println("关冰箱门");
*/
//在面向过程中,有些动作要重复执行,定义方法

open();
in();
close();
}
public static void open() {
System.out.println("开冰箱门");
}


public static void in() {
System.out.println("把大象装进去");
}


public static void close(){
System.out.println("关冰箱门");
}
}

面向对象:
A.分析有哪些类。
大象类
冰箱类
测试类
B.分析类应该有什么。
大象类
把大象装进去
冰箱类
开冰箱门
关冰箱门
测试类
main方法
C.分析类与类之间的关系。
在测试类中,创建大象和冰箱对象,并调用其功能。
代码体现:
class 大象{
public void in(){
System.out.println("把大象装进冰箱");
}
}

class 冰箱{
public void open(){
System.out.println("开冰箱门");
}
public void close(){
System.out.println("关冰箱门");
}
}

class Test{
public static void main(String[] args){
冰箱 b = new 冰箱();
大象 d = new 大象();

b.open();
d.in();
b.close();
}
}


3.类与对象
Java语言是为了描述现实世界事物的。
现实世界事物是怎么体现的:
属性:外在特征
行为:具备的功能
把现实世界的事物通过Java语言来体现,而Java语言中最基本的单位是:类。
所以,每一个显示世界的具体事物其实对应的是一个类。


现实世界事物
属性 成员变量
行为 成员方法


类:类是很多对象的抽象表现形式。
对象:对象是类的具体表现形式。

4.类的组成
A.成员变量
成员变量和局部变量的区别?
a.类中位置区别
成员变量:类中,方法外。
局部变量:类中,方法声明上,或者方法体中。
b.内存位置区别
成员变量:堆内存
局部变量:栈内存
c.生命周期区别
成员变量:随着对象的创建而存在,随着对象的消失而消失。
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失。
d.初始化值区别
成员变量:都有默认初始化值。
局部变量:没有默认初始化值。先定义,再赋值,最后使用。
B.构造方法
a.构造方法的特点
方法名和类名相同。
没有返回值类型。
没有返回值。
b.构造方法注意实现
如果没给,系统给一个无参构造方法。
如果给了,系统将不给。这个时候要么不用无参构造方法,要么自己给一个无参构造方法。
推荐:自己写出无参构造。
C.成员方法
和前面的函数一样,只不过一般不建议加static。

5.private关键字,this关键字,super关键字和static关键字
private关键字:权限修饰符。表示私有的意思。可以修饰成员变量和成员方法。

this:表示当前类的引用对象。
应用场景:解决局部变量隐藏成员变量问题。
this的三种用法:
this.成员变量
this(...)
this.成员方法()
super和this的用法相像,this代表本类对象的引用,super代表父类的内存空间的标识。
当子父类出现同名成员时,可以用super进行区分。

static修饰成员变量和成员方法,被静态修饰的成员变量是对象的共享数据。
static修饰的内容在内存的方法区,跟随类走的。
static修饰的方法中,不能直接调用非静态的,不能写this,super。

方法什么时候写成静态的呢?如果方法没有访问过非静态变量,定义静态方法。
静态的内容,类名直接调用。

6.一个标准的学生类
class Student{
//姓名
private String name;
//年龄
private int age;
//无参构造方法
public Student(){}

public Student(String name, int age){
this.name = name;
this.age = age;
}
//set,get 方法
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}

7.如何使用一个标准的学生类呢?
给成员变量赋值的方式:
A.通过构造方法赋值
B.通过setXxx()方法赋值
class StudentTest{
public static void main(String[] args){
//通过构造方法赋值
Student s1 = new Student("张三",30);
System.out.println(s1.getName()+"---"+s1.getAge);
//通过set方法赋值
Student s2 = new Student();
s2.setName("李四");
s2.setAge(40);
System.out.println(s2.getName()+"---"+s2.getAge);
}
}







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值