3 Java基础 面向对象
2015-12-11 15:02
134 查看
面向对象 三个特征: 封装 继承 多态
以后开发 其实就是找对象使用 没有对象就创建对象
找对象 建立对象 使用对象 维护对象的关系
类和对象的关系
现实生活中的对象 想要描述 :提取对象中共性内容。对具体的抽象
映射到Java中,描述就是class定义的类
具体对象就是对于Java在堆内存中用new建立实体
类就是对现实生活中事物的描述
对象 :就是这类事物,实实在在存在个体
属性对应类中的变量,行为对应类中的函数(方法)
其实定义类就是在描述事物 就是在定义属性和行为。属性和行为共同成为类中的成员(成员函数成员变量)
匿名对象使用方式一:当对对象的方法只掉用一次时,可以用匿名对象来完成这样写比较简化
如果对一个对象经行多个成员调用 必须给这个对象起个名字
匿名对象的使用方式二:可以将匿名对象作为实际参数进行传递
程序举例:
/*
private:私有,权限修饰符:用于修饰类中的成员(成员变量成员函数)
将age私有化以后,类以外即使建立了对象也不能直接访问
但是人应该有年龄,就需要在怕Person类中提供对应访问age的方式
一个属性两种方式 获取 赋值
注意: 私有仅仅是是封装的一种表现形式
之所以对外提供访问方式 就是因为可以在访问方式中加入逻辑判断等语句
对访问的数据进行操作 提高代码健壮性
把属性都隐藏 提供公共方法对其访问
*/
class Person
{
privateint age;
publicvoid setAge(int a )
{
if(a>0&& a<130)
{
age=a;
speak();
}
else
System.out.println("feifaage");
}
publicint getAge()
{
returnage;
}
voidspeak()
{
System.out.println("age="+age);
}
}
class Persondemo
{
publicstatic void main(String[] args)
{
Personp=new Person();
//p.age=-20;
p.setAge(-40);
p.speak();
}
}
/*
对象一建立就会调用与之对应的构造函数
构造函数的作用:可以用于给对象进行初始化
当一个类中没有定义构造函数时那么该系统会默认给该类加入一个空参数的构造函数
当在类中自定义了构造函数后,默认构造函数就没有了
构造函数与一般函数在写法上有不同
在运行上也有不同
构造函数是在一建立就运行给对象初始化
而一般函数是对象调用才执行,给对象添加对象具备的功能
一个对象建立,构造函数只运行一次
而一般方函数以被该对象调用多次
什么时候定义构造函数
当分析事物是该事物存在一些特性或行为,那么将这些特性定义在构造函数中
*/
class Person
{
privateString name;
privateint age;
//Person()()//默认空参数构造函数
/*
构造代码块
作用:给对象进行初始化
对象一建立就运行,而且优先于构造函数执行
和构造函数的区别
构造代码块是给所有对象进行统一初始化
而构造函数是给对应的对象初始化
构造代码块中定义的是不同对象共性的的初始化内容
*/
{
cry();
System.out.println("person code ren");
}
Person()
{
System.out.println("A:name="+name+",,age="+age);
}
Person(Stringn)
{
name=n;
System.out.println("B:name="+name+",,age="+age);
}
/*
publicvoid setName(String n)
{
name=n;
}
publicString getName()
{
returnname;
}
*/
publicvoid cry ()
{
System.out.println("cry....");
}
Person(Stringn,int a )
{
name=n;
age=a;
System.out.println("C:name="+name+",,age="+age);
}
}
class Persondemo2
{
publicstatic void main(String[] args)
{
//Personp=new Person();
//newPerson();
//p2.setName(libusi);
//p2.setName(lisi);
Personp1=new Person();
Personp2=new Person("lisi");
Personp3=new Person("wangwu",10);
}
}
/*
this:看上去,使用与区分局部变量和成员变量同名情况
this为什么可以解决这个问题?
this到底代表的是什么?
this:就是代表本类的对象,到底代表哪一个?
this代表他所在函数所属对象的引用
简单说:哪个对象在调用this所在的函数 this就代表哪个对象
this的应用 当定义类功能时,该函数内部要用该函数的对象时,这时用this
但凡本类功能内部使用了本类对象,都用this表示
*/
class Person
{
privateString name;
privateint age;
Person(intage)
{
this.age=age;
}
Person(Stringname)
{
this.name=name;
}
Person(Stringname,int age )
{
this.name=name;
this.age=age;
}
publicvoid speak()
{
System.out.println("B:name="+this.name+",,age="+this.age);
this.show();
}
publicvoid show()
{
System.out.println(this.name);
}
/*
需求:给人定义一个用于比较年龄是否相同的功能,也就是是否是同龄人
*/
publicboolean compare(Person p)
{
returnthis.age==p.age;
}
}
class Persondemo3
{
publicstatic void main(String[] args)
{
Personp1=new Person(20);
Personp2=new Person(25);
booleanb =p1.compare(p2);
System.out.println(b);
//Personp=new Person("lisi");
//Personp1=new Person("san");
//p.speak();
//p1.speak();
}
}
/*
public static void main(String[] args)
主函数:是一个特殊的函数作为程序的入口 可以被jvm调用
主函数的定义:
public 代表着该函数访问权限是最大的
static 代表主函数随着类的加载就已经存在了
void 主函数没有具体的返回值
main 不是关键字 但是是一个特殊的单词 可以被jvm识别
函数的参数;(String [] arr)函数的参数参数类型是一个数组该数组中的元素是字符串字符串类型的数组
主函数是固定格式的:jvm识别
jvm在调用主函数时,传入的是newString[0];
args变量名 可以改变(arguments)
*/
class main
{
publicstatic void main(String[] args) //
{
System.out.println(args.length);
System.out.println(args[0]);//如果想把所有元素打印用for循环
// String[]arr={"heihei","hehe","haha","xixi"};
//System.out.println(args[x]);
//Maintest.main(arr);
}
}
以后开发 其实就是找对象使用 没有对象就创建对象
找对象 建立对象 使用对象 维护对象的关系
类和对象的关系
现实生活中的对象 想要描述 :提取对象中共性内容。对具体的抽象
映射到Java中,描述就是class定义的类
具体对象就是对于Java在堆内存中用new建立实体
类就是对现实生活中事物的描述
对象 :就是这类事物,实实在在存在个体
属性对应类中的变量,行为对应类中的函数(方法)
其实定义类就是在描述事物 就是在定义属性和行为。属性和行为共同成为类中的成员(成员函数成员变量)
匿名对象使用方式一:当对对象的方法只掉用一次时,可以用匿名对象来完成这样写比较简化
如果对一个对象经行多个成员调用 必须给这个对象起个名字
匿名对象的使用方式二:可以将匿名对象作为实际参数进行传递
程序举例:
/*
private:私有,权限修饰符:用于修饰类中的成员(成员变量成员函数)
将age私有化以后,类以外即使建立了对象也不能直接访问
但是人应该有年龄,就需要在怕Person类中提供对应访问age的方式
一个属性两种方式 获取 赋值
注意: 私有仅仅是是封装的一种表现形式
之所以对外提供访问方式 就是因为可以在访问方式中加入逻辑判断等语句
对访问的数据进行操作 提高代码健壮性
把属性都隐藏 提供公共方法对其访问
*/
class Person
{
privateint age;
publicvoid setAge(int a )
{
if(a>0&& a<130)
{
age=a;
speak();
}
else
System.out.println("feifaage");
}
publicint getAge()
{
returnage;
}
voidspeak()
{
System.out.println("age="+age);
}
}
class Persondemo
{
publicstatic void main(String[] args)
{
Personp=new Person();
//p.age=-20;
p.setAge(-40);
p.speak();
}
}
/*
对象一建立就会调用与之对应的构造函数
构造函数的作用:可以用于给对象进行初始化
当一个类中没有定义构造函数时那么该系统会默认给该类加入一个空参数的构造函数
当在类中自定义了构造函数后,默认构造函数就没有了
构造函数与一般函数在写法上有不同
在运行上也有不同
构造函数是在一建立就运行给对象初始化
而一般函数是对象调用才执行,给对象添加对象具备的功能
一个对象建立,构造函数只运行一次
而一般方函数以被该对象调用多次
什么时候定义构造函数
当分析事物是该事物存在一些特性或行为,那么将这些特性定义在构造函数中
*/
class Person
{
privateString name;
privateint age;
//Person()()//默认空参数构造函数
/*
构造代码块
作用:给对象进行初始化
对象一建立就运行,而且优先于构造函数执行
和构造函数的区别
构造代码块是给所有对象进行统一初始化
而构造函数是给对应的对象初始化
构造代码块中定义的是不同对象共性的的初始化内容
*/
{
cry();
System.out.println("person code ren");
}
Person()
{
System.out.println("A:name="+name+",,age="+age);
}
Person(Stringn)
{
name=n;
System.out.println("B:name="+name+",,age="+age);
}
/*
publicvoid setName(String n)
{
name=n;
}
publicString getName()
{
returnname;
}
*/
publicvoid cry ()
{
System.out.println("cry....");
}
Person(Stringn,int a )
{
name=n;
age=a;
System.out.println("C:name="+name+",,age="+age);
}
}
class Persondemo2
{
publicstatic void main(String[] args)
{
//Personp=new Person();
//newPerson();
//p2.setName(libusi);
//p2.setName(lisi);
Personp1=new Person();
Personp2=new Person("lisi");
Personp3=new Person("wangwu",10);
}
}
/*
this:看上去,使用与区分局部变量和成员变量同名情况
this为什么可以解决这个问题?
this到底代表的是什么?
this:就是代表本类的对象,到底代表哪一个?
this代表他所在函数所属对象的引用
简单说:哪个对象在调用this所在的函数 this就代表哪个对象
this的应用 当定义类功能时,该函数内部要用该函数的对象时,这时用this
但凡本类功能内部使用了本类对象,都用this表示
*/
class Person
{
privateString name;
privateint age;
Person(intage)
{
this.age=age;
}
Person(Stringname)
{
this.name=name;
}
Person(Stringname,int age )
{
this.name=name;
this.age=age;
}
publicvoid speak()
{
System.out.println("B:name="+this.name+",,age="+this.age);
this.show();
}
publicvoid show()
{
System.out.println(this.name);
}
/*
需求:给人定义一个用于比较年龄是否相同的功能,也就是是否是同龄人
*/
publicboolean compare(Person p)
{
returnthis.age==p.age;
}
}
class Persondemo3
{
publicstatic void main(String[] args)
{
Personp1=new Person(20);
Personp2=new Person(25);
booleanb =p1.compare(p2);
System.out.println(b);
//Personp=new Person("lisi");
//Personp1=new Person("san");
//p.speak();
//p1.speak();
}
}
/*
public static void main(String[] args)
主函数:是一个特殊的函数作为程序的入口 可以被jvm调用
主函数的定义:
public 代表着该函数访问权限是最大的
static 代表主函数随着类的加载就已经存在了
void 主函数没有具体的返回值
main 不是关键字 但是是一个特殊的单词 可以被jvm识别
函数的参数;(String [] arr)函数的参数参数类型是一个数组该数组中的元素是字符串字符串类型的数组
主函数是固定格式的:jvm识别
jvm在调用主函数时,传入的是newString[0];
args变量名 可以改变(arguments)
*/
class main
{
publicstatic void main(String[] args) //
{
System.out.println(args.length);
System.out.println(args[0]);//如果想把所有元素打印用for循环
// String[]arr={"heihei","hehe","haha","xixi"};
//System.out.println(args[x]);
//Maintest.main(arr);
}
}
相关文章推荐
- 一步步搭建java信息管理系统00 - 前言
- 两种Java数字交换算法哪个快。
- Java的读文件和写文件
- Eclipse开发过程中个VM Arguments的设置
- Java学习笔记----线程2
- Java POI 读取Office excel (2003,2007)及相关jar包
- Eclipse中最有用的快捷键组合
- [javase学习笔记]-2.7 变量和数据类型(2)
- Java 用动态代理实现AOP
- java list<string>组 传递到值js排列
- SpringMVC学习笔记二第一个小的程序
- Java操作Excel
- 搭建Java开发环境(安装JDK和Eclipse)
- 基于Spring MVC的ECharts动态数据实时展示
- Spring面试问答Top 25
- Java代码规范
- Spring入门示例及相关概念介绍
- java最佳实践
- Java笔记-写在开始
- Java序列化和反序列化