java面向对象的语言
对象:真实存在唯一的事物
比如:我家的狗
类:实际是上就是对某种类型事物的共性属性与行为的抽取。抽象的概念。。。
类----->对象
图纸----->真实存在的事物
我们从小的时候就不断的接触很多的对象,
我们的大脑就会把这些具备相同属性与行为的事物进行分类
在现实生活中就存在对象与类这两种事物。计算机是服务于人类的,为了让计算机更加接近我们的生活
这时候就出现了面向对象的计算机语言。
面向过程(c)侧重于过程,动作的执行者
买电脑
比如:1.自己查资料
2.自己写配置单标明价钱
3.师兄敲门,想黑你
4.拿配置单去 百脑汇
5.买了翻新机回来了
找对象:
1.自己摇一摇
2.看到一个不错的照片
3.自己约见
4.感叹ps技术强大
5.安装默默
6.又有照片不错的
7.约见
8.遇到了酒托9.发誓永远不找对象
面向对象(java)侧重于对象,找适合的对象做适合的事情 ,动作的指挥者
买电脑
1.找老表(修电脑)
2.师兄上门找你,你叫他找老表
3.老表自己去百脑汇
4,商家想黑老表,老表还可以黑回老表
5,老表扛着电脑给你
找对象:
1.找大型的婚戒公司
2.告诉你的要求
3.遇到符合你要求的时候,电话通知面试
4.结婚了
现实生活中:对象---->类
在Java中:类----->对象
面向对象的计算机语言的核心思想:找适合的对象做适合的事情
如何找适合的对象:
1.sun已经定义好了很多的类,我们只需要认识这些类,我们就可以通过这些类创建对象使用。
2.自定义类,通过自定义类来创建对象使用
自定义类的三步骤:
1.自定义类
格式:
class 类名{
事物的公共属性使用成员属性描述
事物的公共行为使用函数描述
}
2.通过自定义类创建对象
格式:new 类名()
3.访问(设置)对象的属性或者调用对象的功能。
1.访问对象属性的格式:
对象.属性名
2.设置对象的属性:
对象.属性名=数据;
3.调用对象的功能
对象.函数名
注意:成员属性是有默认初始值的
数据类型 默认的初始值
int 0
float 0.0f
double 0.0
char ""
String null
引用数据类型 null
对象一旦创建,对象的成员变量也会发生分配默认初始值
需求:使用Java类描述一个汽车类,汽车具备轮子数,名字,颜色,还具备跑的功能行为
*/
//车类
class Car{
// 事物的公共属性使用成员属性(成员变量)描述
String name;//名字的属性
String color;//颜色属性
int wheel;//轮子数
//事物的公共行为使用函数描述
public void run(){
System.out.println(name+" 飞快的跑起来了....");
}
}
class Demo1
{
public static void main(String[] args)
{
/*
//使用了Car类声明了--c变量,c变量指向了一个车对象;
Car c= new Car();
//设置车对象的属性值
c.name="RAW";
c.color="白色";
c.wheel=4;
//访问车对象的属性
System.out.println("名字: "+c.name + " 颜色: "+c.color+" 轮子数: "+c.wheel);
c.run();
*/
Car c1 = new Car();
c1.name = "宝马";
Car c2 = new Car();
c2.name = "大众";
c1 = c2;
System.out.println("名字: " +c1.name);//大众
}
}
/*
需求:使用java描述一个车与修车厂两个事物,车具备的公共属性:轮子数、名字、颜色、还具备跑的功能行为。跑之前要检测轮子
是否少于了4个,如果少于了4个,那么要送到修车厂修理,修车厂修理之后,车的轮子数要补回来4个,然后车就继续跑起来了。
修车厂:具备公共属性:名字,地址,电话。
公共行为:修车
初学者的经典错误:
1.不在同一个范围内,随意的引用了变量.变量在同一个作用域上是可以直接访问的
2.如果一个类要访问另外一个类的变量时,那么这是时候就只能通过对象进行访问了(仅对于目前正确)
*/
class Car{
//事物的公共属性使用成员变量描述
String name;//名字属性
String color;//颜色
int wheel;//轮子数
//事物的公共行为使用函数来描述
public void run(){
if (wheel>=4){
System.out.println(name + "飞跑起来了");
}else{
System.out.println(name + "不够四个轮子赶快去修理" );
}
}
}
//修车厂
class CarFactory{
String name ;//名字
String address;//地址
String tel;//电话
//修车的公共行为--------返回值类型,未知参数
public Car repair(Car c){
if (c.wheel>=4){
System.out.println("告诉你很大力气修好了,给钱");
}else{
c.wheel = 4;
System.out.println("修好了,给钱");
}
return c;
}
}
class Demo2
{
public static void main(String[] args)
{
/*
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);
// 调用
c.run();
*/
//需求:调用一次repair方法.前提:该对象调用玩一个方法之后,这个对象就不再使用了
CarFactory f= new CarFactory();
//Car c=new Car();
f.repair(new Car());
}
}
/*
成员变量与局部变量的区别:
定义的位置的区别:
1.成员变量时定义在方法之外,类之内的。
2.局部变量是定义在方法之内。
作用上的区别:
1.成员变量的作用是用于描述一类事物的公共属性的。
2.局部变量作用就是提供一个变量给方法内部使用而已
生命周期的区别:
1.随着对象的创建而存在,随着对象的消失而消失
2.局部变量在调用了对应的方法时,执行到了创建该变量的语句时存在,
局部变量一旦出了自己的作用域,那么马上从内存中消失。
初始值的区别:
1.成员变量使用默认的初始值的
数据类型 默认初始值
int 0
float 0.0f
double 0.0
boolean false
char ''
String(引用数据类型) null
2.局部变量是没有默认的初始值的,必须要先初始化才能使用(不使用的话可以不用初始化)
*/
//人类
class Person
{
String name;//成员变量
public void eat(){
int age ;
age = 12;
for (int i=0; i<;i++ )
{
System.out.println("hello"+age);
}
/*int age=1;
System.out.println("哈哈");
for (int i= 0;i<5 ;i++ )
{
System.out.println("i="+i);
}
//System.out.println("i=" + i);(i访问不到这里)
*/
}
}
class Demo3
{
public static void main(String[] args)
{
Person p1= new Person();
p1.eat();
}
}
/*
匿名对象:没有引用类型变量指向的对象称作为匿名对象
需求:使用java类描述一个学生类
匿名对象的好处:简化书写,节省内存空间
匿名对象要注意的事项:
1.我们一般不会给匿名对象赋予属性值,因为永远无法获取到
2.两个匿名对象永远都不可能是同一个对象
匿名对象的应用场景:
1.如果一个对象需要调用一个方法一次的时候,而调用完这个方法之后,该对象就不再使用了,这个时候就可以使用匿名对象
2.可以作为实参调用一个函数
*/
class Student{
int num;//学号
String name;//名字
public void study(){
System.out.println("好好学习");
}
}
class Demo4
{
public static void main(String[] args)
{
/*
//创建一个学生对象
//Student s=new Student();
//new Student().name= "狗娃";//匿名对象
//System.out.println(new Student().name);//null
//false
System.out.println(new Student()==new Student());//"=="用于引用类型的变量时,比较的是内存地址
需求:调用Student的study方法。
Student s=new Student();
s.study();
*/
new Student().study();
}
}