1、 面向过程与面向对象
面向过程:
优点:
代码直观,相对容易看出代码走向,我们是根据功能去直接开发
自上而下
缺点:
代码的维护与扩展、再次利用比较困难
面向对象:
优点:
代码相对容易维护,相对容易扩展、代码可复用率高
缺点:
代码的封装,与面向过程比较会稍微难看出一些走势
2、 什么是面向对象
比如,我们希望在一个游戏中炸毁一个星球
面向过程:
我们会考虑游戏中那颗星球的一些引爆因素,那个星球的一些环境问题……
主要围绕这颗星球进行。
面向对象:
我们会考虑所有星球存在的一些引爆因素,所有星球的一些环境问题……
主要围绕星球整体。
所以说:面向过程,我们只会实现当前目标,如果把“这颗星球”替换成“那颗星球”,此时我们需要重新操作;
面向对象,我们只需要实现了这一整套逻辑,无论是“这颗星球”还是“那颗星球”都可以当作参数去调用对应的方法
3、 面向对象
核心:类
两大核心
静态特征:属性,成员变量
动态特征:行为、方法
4、 类和对象
对象是类的实例
理论来说,如果不做特别的约定,那么一个类可以实例化出多个对象。
5、 声明一个类——属性
Dog.java
public class Dog{
//属性
//狗名
String dogName;
//品种名
String typeName;
//狗性别
char dogSex;
}
Test.java
public static void main(String[] args){
//实例化四只狗
Dog dog = new Dog();
Dog wangCai = new Dog();
Dog laiFu = new Dog();
Dog daHuang = new Dog();
//给第一只狗补充他的全部属性
dog.dogName="狗";
dog.dogSex='1';
dog.typeName="中华田园犬";
//给第二只狗补充他的两个属性
wangCai.dogName="旺财";
wangCai.dogtype="柴犬";
//给第三只狗补充它的一个属性
laiFu.dogName="来福";
//不给第四至狗补充属性
//打印狗的名字
System.out.println(dog.dogName);
System.out.println(wangCai.dogName);
System.out.println(laiFu.dogName);
System.out.println(daHuang.dogName);
}
6、 声明一个方法
//方法由 //修饰符[public/static/final] 返回类型[void-无返回类型,引用数据类型-String/自定义类,基本数据类型-八大基本数据类型] 方法名(参数){方法体}
例如:
public class dog{
//属性
//。。。
//方法
//犬吠
//public为修饰符(访问修饰符)
//void为返回类型(void是无返回类型)
//返回类型如果是void可以没有return(但是你也能写return,return的作用为结束当前的方法)
//return和break不一样,break最用在switch和循环中,是打破的意思,return是返回的意思
//breaking方法名——符合表示命名规则,规则和变量基本相同,首字母要求小写,并且满足驼峰命名,
// 有意义
//()括号内为参数,这个方法是无参方法(没有参数的方法)
//{}大括号内为方法体,这个方法是输出一句话
public void barking(){
System.out.println("这只名叫"+dogName+"的狗发出了声音……");
}
//将这个狗编程字符串,展示出他的属性
//如果你的返回类型不为void,那么你这个方法一定要return,并且return的这个内容必须符合你的回回类型
public String toString(){
return "{dogName"+dogName+"typeName"+typeName+"dogSex="+(int)dogSex+"}";
}
//此方法会返回狗的名字
//dogName为这个类的一个属性,属性的类型为String和这个方法的返回类型一直
public String getName(){
return dogName;
}
}
//方法分使用,两种情况
//同一类中可以直接调用,比如:
public class Zoo{
String palyerNmae;
int palyerAge;
//print()方法调用 show() 方法不需要实例化zoo对象
public void print(){
System.out.println(show());
}
public String show(){
String sReturn="";
sReturn=playerName+"的年龄为:"+palyerAge+",";
if(playerAge<10){
sReturn="门票免费" ;
}else{
sReturn="门票价格为20元";
}
return sReturn;
}
}
//不同中调用需要一般方法,先实例化Zoo对象获得zoo之后使用zoo.print();进行调用
//入
public static void main(String[] args){
Zoo zoo=new Zoo();
Scanner input=new Scanner(System.in);
while(true){
System.out.print("请输入姓名:");
zoo.playerName=input.next();
if("n".equals(zoo.playerName)){
break;
}
System.out.print("请输入年龄:");
zoo.playerAge=input.nextInt();
zoo.print();
}
System.out.println("退出程序");
}