Java面向对象学习

/*package com.fish.object;
java面向对象的语言
对象:真实存在唯一的事物。比如我家的狗
类: 实际就是对某种类型事物的共性属性与行为的抽取。  抽象的概念....   车
类---->图纸  对象--->真实存在的事物
我们从小的时候就不断的接触很多的对象,我们的大脑就会把
这些具备相同属性与行为的事物进行分类。
在现实生活中就存在对象与类这两种事物。计算机是服务于人类,为了让计算机更加接近我们的
生活,这时候就出现了面向对象的计算机语言。
面向过程(C)                  面向对象(java)
解决问题的思路:侧重于过程
解决问题的思路:侧重对象
现实生活中 : 对象---------类
在java中: 类------------>对象
面向对象的计算机语言核心思想: 找适合的对象做适合的事情。
如何找适合的对象:
1. sun已经定义好了很多的类,我们只需要认识这些类,我们就可以通过这些类创建对象使用。 
2. 自定义类,通过自定义类来创建对象使用。
自定义类创建对象的三步骤:
1. 自定义类。
格式:
class 类名{
事物的公共属性使用成员变量描述。
事物的公共行为使用函数描述。
}
2. 通过自定义类创建对象。
格式: 
类名 变量名 =  new 类名();
3. 访问(设置)对象的属性或者调用对象的功能。
1.访问对象属性的格式:
对象.属性名.
2.设置对象的属性:
对象.属性名 = 数据。
3. 调用对象的功能
对象.函数名();
//车类
class Car{
//事物的公共属性使用成员变量描述。
Stringname; //名字的属性
Stringcolor; //颜色属性
int wheel;//轮子数
//事物的公共行为使用函数描述。
public void run(){
System.out.println(name+"飞快的跑起来啦...");
}
}
class Demo1 
{
public static void main(String[] args) 
{
//使用了Car类声明了一c变量, c变量指向了一个车对象。
Carc = new Car(); 
//设置车对象的属性值。
c.name = "BMW";
c.color = "白色";
c.wheel = 4;
//访问车对象的属性值
System.out.println("名字:"+ c.name+" 颜色:"+ c.color+" 轮子数:"+c.wheel);
c.run();
Carc1 = new Car(); 
c1.name = "宝马";
Car c2 = new Car();
c2.name = "大众";
c1 = c2; 
System.out.println("名字:"+ c1.name);  //大众  大众 \大众
}
}
*/
package com.fish.object;
/*
需求: 使用java描述一个车与修车厂两个事物, 车具备的公共属性:轮子数、 名字、 颜色 ,还
具备跑的功能行为。跑之前要检测轮子是否少于了4个,如果少于了4个,那么要送到修车厂修理,
修车厂修理之后,车的轮子数要补回来4个。 然后车就继续的跑起来。
修车厂: 具备公共属性: 名字、 地址、 电话。
 公共的行为: 修车。
初学者的经典错误:
1. 变量在同一个作用域(大括号)上是可以直接访问的。
2. 如果一个类要访问另外一个类变量时,那么这时候就只能通过创建对象进行访问。(仅对于目前正确)
*/
//车类
class Car{
//事物的公共属性使用成员变量描述
String name ; // 名字
String color; //名字
int wheel; //轮子数
//事物的公共行为使用函数描述
public void run(){
if(wheel>=4){
System.out.println(name+wheel+"个轮子飞快跑起来..");
}else{
System.out.println(name+"不够4个轮子了,赶快去修理");
}
}
}
//修车厂
class CarFactory{
String name;//名字
String address ;//地址
String tel;//电话
//修车公共行为 ------ 返回值类型、 未知的参数
public void repair(Car c){
if(c.wheel>=4){
System.out.println("告诉你,费了很大力气修好了,给钱");
}else{
c.wheel = 4;
System.out.println("修好了,给钱!!");
}
}
}
class Demo2 
{
public static void main(String[] args) 
{
/*
//0x98
Car c = new Car();
//给车对象赋予属性值
c.name = "陆丰";
c.color = "黑色";
c.wheel = 4;
for(int i = 0 ; i<100 ; i++){
c.run();
}
c.wheel = 3;
c.run();
//创建修车厂对象
CarFactory f = new CarFactory();
//给修车厂赋予属性值
f.name = "集群宝修车厂";
f.address = "韵泰商业广场一楼";
f.tel = "020-1234567";
//调用修车的修车
f.repair(c);//0x98
//
c.run();
*/
//需求: 调用一次repair方法。  前提: 该对象调用完一个方法之后,这个对象就不再使用了。
}
}
package com.fish.object;
/*
成员变量与局部变量的区别:
定义的位置上区别:
1. 成员变量是定义在方法之外,类之内的。
2. 局部变量是定义在方法之内。
作用上的区别:
1. 成员变量的作用是用于描述一类事物的公共属性的。
2. 局部变量的作用就是提供一个变量给方法内部使用而已。
生命周期区别:
1. 随着对象的创建而存在,随着对象的消失而消失。
2. 局部变量在调用了对应的方法时执行到了创建该变量的语句时存在,局部变量一旦出了自己的作用域,也就是出了自己的{},这点跟Javascript不同
那么马上从内存中消失。
初始值的区别:
1. 成员变量是有默认的初始值。
数据类型     默认的初始值
int                0
float              0.0f
double              0.0
boolean            false
char                 ‘ ‘
String(引用数据类型) null
2. 局部变量是没有默认的初始值的,必须要先初始化才能使用。
*/

//人类
class Person {
    String name; //成员变量
    public void eat(){
    
        //System.out.println("Hello World") // 执行到这里并没有创建局部变量      
        int age ; //局部变量到后面都没有使用,则不初始化,编译也不会报错
        String name; //局部变量
        age = 12;
        
        
        for(int i =  0 ; i< 5 ; i++){
            System.out.println("hello world"+ age);
        }
        
        //System.out.println(i) //访问不到i
    }
}
class Demo3 
{
    public static void main(String[] args) 
    {
        Person p1 =  new Person();
        p1.eat();
    }
}
时间: 2024-12-22 20:54:20

Java面向对象学习的相关文章

java面向对象学习笔记(1)

此笔记用于记录java面向对象部分学习的心得体会. 一.对象的this指针引用 java提供了一个this关键字,this关键字总是指向调用该方法的对象.根据this出现的位置不同,this作为对象的默认引用有两种情况: 1.构造器中引用该构造器正在初始化的对象. 2.在方法中引用调用该方法的对象. this关键字的最大作用就是让类中的一个方法去访问另一个方法或File.下面通过一段代码来进行说明. package test; public class Dog { public void Jum

黑马程序员——JAVA面向对象学习总结

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- www.itheima.com 首先,面向对象是一种思想. 有一种面向过程的思想,面向对象就是基于面向过程的. 举个例子:把大象放进冰箱中. 面向过程: 用我们程序模拟 (java是纯面向对象语言) class Demo{ public static void main(String[] args){ /* 这几个动作相当于功能 既然是功能就用方法封装 */ //先打开冰箱门 open();

Java面向对象学习笔记 -- 1(类、对象、构造器)

1. 类 1)是同类型东西的概念,是对现实生活中事物的描述,映射到Java中描述就是class定义的类. 2)其实定义类,就是在描述事物,就是在定义属性(变量)和方法(函数). 3)类中可以声明:属性,方法,构造器: 属性就是实例变量,用于声明对象的结构的,在创建对象时候分配内存,每个对象有一份! 实例变量(对象属性)在堆中分配,并作用于整个类中,实例变量有默认值,不初始化也能参与运算. 4)类与类之间的关系: ① 关联:一个类作为另一个类的成员变量 public class A { pulic

Java面向对象学习笔记 -- 7(GC)

1. 垃圾回收机制(GC) 1)Java内存分配    在JAVA程序中,无论代码还是数据,都需要存储在内存中,而java程序所需内存均由JVM进行管理分配,JVM会将申请的内存从逻辑上划分为三个区域:堆.栈.方法区.这三个区域分别用于存储不同的数据. 堆用来存放创建出来的对象,jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身,每个对象都包含一个与之对应的class的信息(class的目的是得到操作指令): 栈中只保存基本数据类型和对堆空间的对象的引用变

java面向对象学习(3)

一.Java7增强的包装类 为了解决Java中8中基本数据类型不能当成Object 类型变量使用的问题,java提供了包装类,为8中基本数据类型分别定义了相应的引用类型. java1.5以后JDK提供了自动装箱和自动拆箱的功能,所以基本类型和包装类型可以直接装换.包装类可以实现基本类型和字符串类型的转换: 1.利用包装类的parseXxx(String s) 静态方法. 2.是利用包装类提供的构造器 利用String类提供的valueof方法可以实现基本类型转成字符串. 示例代码如下: pack

java面向对象学习笔记(2)

一.构造器 1.构造器最大的用处就是在创建对象时执行初始化,每个java类必须包含一个或一个以上的构造器.一般系统会提供一个无参的构造器,但是如果我们自己定义了一个构造器后它就不会再起作用了.如果我们为一个类编写了有参构造器,那么最好还是为该类提供一个无参的构造器. 2.构造器的重载 同一个类中可以包含有多个构造器,多个构造器的形参列表不同,即被称为构造器的重载.系统通过new调用构造器时,系统将根据传入的实参列表来决定调用哪个构造器.示例代码如下: <span style="font-s

Java面向对象学习笔记 -- 3(继承、向上造型、重写)

1. 继承 1)extends关键字 ,使用继承可以实现代码的重用,在java语言中,需要通过extends关键字实现类的继承.继承完成后,子类(Sub class)可以继承父类(Super class)的成员变量及成员方法,同时子类也可以定义自己的成员变量和成员方法.届时,子类将具有父类的成员及本类的成员. 需要注意的是,Java语言不支持多重继承,即:一个类只能继承一个父类,但一个父类可以有多个子类. 2)使用继承的好处: ① 继承是在一些比较一般的类的基础上构造.建立和扩充新类的最有效的手

Java面向对象学习笔记 -- 5(抽象类、接口)

1. 抽象类 抽象就是将拥有共同方法和属性的对象提取出来,提取后,重新设计一个更加通用.更加大众化的类,就叫抽象类. 1)抽象方法:由abstract修饰,只有方法的定义,没有方法的实现: 2)包含抽象方法的类必须是抽象类: 3)抽象类:由abstract修饰,不能被实例化,可以包含抽象方法和非抽象方法: 4)抽象类都是需要被继承的,子类继承后再实现以下操作: 4.1)子类中重写父类的抽象方法 4.2)子类也声明为抽象类 5)抽象类的意义: 5.1)封装子类共有的变量和方法--代码的重用 5.2

Java面向对象学习笔记 -- 2(访问控制修饰符)

1. 访问控制修饰符(封装) 封装:将数据封装到类的内部,将算法封装到方法中. 1)封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问,通常有两种访问方式:set 设置,get 获取. 2)封装结果:存在但是不可见. 3)public:任何位置可见,可以修饰:类.成员属性.成员方法.内部类.跨包访问类(需要使用import语句导入),成员属性 = = 成员变量. 4)protected:当前包中可见,子类中可见.可以修饰:成员属性.成员方法.内部类(只能在类体中使用,