/*面向对象与面向过程的辨析:
面向对象是一种思维,是基于面向过程的,面向过程注重的是过程,完成一件事所需要的全部过程都要参与,效率较低。
而面向对象注重的是一种结果,对于过程是怎么实现的,却根本不关心,只要对象具备了我所需要的功能,那么就调用这个对象来实现我所需要的结果。
面向对象使我们由执行者变成了指挥者。
面向对象体现在代码中就是把一些功能,属性封装在类中,创建该类对象,并使用对象对该类中的功能进行调用。
封装可以提高代码的复用性
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Eat et=new Eat(); //创建对象
et.eat("小明"); //调用属性
System.out.println(et.name); //调用函数
}
}
class Eat //定义一个类,里面封装了eat();的方法和name属性
{
String name;
void eat(String name){
this.name=name;
System.out.println("我吃了!");
}
}
//如果不想让外界直接访问属性,可以讲属性进行私有化,并对外提供公共的访问方法set/get方法
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Eat et=new Eat();
et.setName("小明");
System.out.println(et.getName());
et.eat();
}
}
class Eat
{
private String name; //属性私有化
void eat(){
System.out.println("我吃了!");
}
public String getName() { //对外提供的公共访问方法
return name;
}
public void setName(String name) {
this.name = name;
}
}
//若不行外界创建本类对象,可以对构造函数进行私有化,但内部方法和属性必须为静态(static)属性或方法,通过类名直接调用
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Eat.setName("小明"); //通过类名直接调用
System.out.println(Eat.getName());
Eat.eat();
}
}
class Eat
{
private static String name;
private Eat(){}
private Eat(String name){
this.name=name;
}
static void eat(){
System.out.println("我吃了!");
}
public static String getName() {
return name;
}
public static void setName(String name) {
Eat.name = name;
}
}
//单例设计模式:把构造函数私有化,不让其创建对象,类中创建一个对象,对外提供静态访问方法,返回此对象,通过此对象对类中的方法属性进行调用
class Test
{
public static void main(String[] args)
{
Person per=Person.per(); //类名直接访问方法
System.out.println("------------------"); //分隔符
Person per1=Person.per();
per.eat(); //通过类中对象调用方法
System.out.println(per==per1); //两个对象地址值是一样的
}
}
class Person
{
private static Person per=new Person(); // 创建本类对象
private String name="xiao";
private String sex;
private int age;
private Person() //构造方法私有化
{
System.out.println("不准访问!");
}
private Person(String name)
{
this.name=name;
}
private Person(String name,String sex)
{
this(name);
this.sex=sex;
}
private Person(String name,String sex,int age)
{
this(name,sex);
this.age=age;
}
//--------------gs-----------
void setName(String name)
{
this.name=name;
}
String getName()
{
return name;
}
void setSex(String sex)
{
this.sex=sex;
}
String getSex()
{
return sex;
}
void setAge(int age)
{
this.age=age;
}
int getAge()
{
return age;
}
public static Person per() //对外提供静态访问方法,返回本类对象
{
String x=per.name;
System.out.println(x);
return per;
}
public void eat()
{
System.out.println("吃饱了!");
}
}
面向对象是一种思维,是基于面向过程的,面向过程注重的是过程,完成一件事所需要的全部过程都要参与,效率较低。
而面向对象注重的是一种结果,对于过程是怎么实现的,却根本不关心,只要对象具备了我所需要的功能,那么就调用这个对象来实现我所需要的结果。
面向对象使我们由执行者变成了指挥者。
面向对象体现在代码中就是把一些功能,属性封装在类中,创建该类对象,并使用对象对该类中的功能进行调用。
封装可以提高代码的复用性
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Eat et=new Eat(); //创建对象
et.eat("小明"); //调用属性
System.out.println(et.name); //调用函数
}
}
class Eat //定义一个类,里面封装了eat();的方法和name属性
{
String name;
void eat(String name){
this.name=name;
System.out.println("我吃了!");
}
}
//如果不想让外界直接访问属性,可以讲属性进行私有化,并对外提供公共的访问方法set/get方法
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Eat et=new Eat();
et.setName("小明");
System.out.println(et.getName());
et.eat();
}
}
class Eat
{
private String name; //属性私有化
void eat(){
System.out.println("我吃了!");
}
public String getName() { //对外提供的公共访问方法
return name;
}
public void setName(String name) {
this.name = name;
}
}
//若不行外界创建本类对象,可以对构造函数进行私有化,但内部方法和属性必须为静态(static)属性或方法,通过类名直接调用
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Eat.setName("小明"); //通过类名直接调用
System.out.println(Eat.getName());
Eat.eat();
}
}
class Eat
{
private static String name;
private Eat(){}
private Eat(String name){
this.name=name;
}
static void eat(){
System.out.println("我吃了!");
}
public static String getName() {
return name;
}
public static void setName(String name) {
Eat.name = name;
}
}
//单例设计模式:把构造函数私有化,不让其创建对象,类中创建一个对象,对外提供静态访问方法,返回此对象,通过此对象对类中的方法属性进行调用
class Test
{
public static void main(String[] args)
{
Person per=Person.per(); //类名直接访问方法
System.out.println("------------------"); //分隔符
Person per1=Person.per();
per.eat(); //通过类中对象调用方法
System.out.println(per==per1); //两个对象地址值是一样的
}
}
class Person
{
private static Person per=new Person(); // 创建本类对象
private String name="xiao";
private String sex;
private int age;
private Person() //构造方法私有化
{
System.out.println("不准访问!");
}
private Person(String name)
{
this.name=name;
}
private Person(String name,String sex)
{
this(name);
this.sex=sex;
}
private Person(String name,String sex,int age)
{
this(name,sex);
this.age=age;
}
//--------------gs-----------
void setName(String name)
{
this.name=name;
}
String getName()
{
return name;
}
void setSex(String sex)
{
this.sex=sex;
}
String getSex()
{
return sex;
}
void setAge(int age)
{
this.age=age;
}
int getAge()
{
return age;
}
public static Person per() //对外提供静态访问方法,返回本类对象
{
String x=per.name;
System.out.println(x);
return per;
}
public void eat()
{
System.out.println("吃饱了!");
}
}