一.面向对象编程。(java的类及类的成员,面向对象的三大特征,其他关键字)
逐渐领悟多写多敲!!!
1.面向对象与面向过程(oop pop)
举例子:
打球:面向过程编写,专注于打球动作
面向对象编写,打球的动作归属于谁?所以就出现一个人的对象,人的对象里包含了打球的动作
2.面向对象的三大特征(封装,继承,多态 )
3.java类及类的成员(java是多个不同功能的类组成)
class类来描述事物
属性:对应类中的成员变量 行为:对应类中的成员方法
Field = 属性 = 成员变量 Method = (成员)方法 = 函数
面向对象的思想:(汽车设计图[类]---对象【汽车】--类的变量【零部件】----类的成员方法【运行】)
4.类的编写语法格式
public class Person { // 属性,成员变量可以先声明不用初始化,有默认值(简单的类) String name; //默认值null int age;//默认值0 // 行为 ,方法(打印姓名) public void showName(){//方法名首字母小写第二个开始大写 System.out.println("姓名:"+name); } // 获取年龄 public int getAge(){//如果返回值只有一个那返回后一定是最后一行,使用return返回结束。 return age; } }
5.创建java的自定义类
(1)定义类【考了修饰符类名】(2)编写类的属性【修饰符,属性类型,属性名,初始化数值】(3)编写类的方法【修饰符 返回值 方法名 型参等】
//动物的类 public class Animal { String name; int eye; int legs; public void eat(String food){ System.out.println("此种动物的食物网是"+food); } public void move(String moveType){ System.out.println("此种动物的移动方式是"+ moveType); } }
6.对象的创建和使用
public class Test1 { public static void main(String[] args){ // 实例化person类,也就是创建它的对象 // int i = 0; // String s = “” Person person=new Person();//声明一个person类型,实例化 person.name ="张三";//给对象赋值 person.showName();//对象调用方法 int i=person.getAge();//返回值为默认 System.out.println(i); person.age=20;//给对象age赋值 int a =person.getAge(); System.out.println(a); //实例化动物类的对象 Animal ani =new Animal(); ani.eat("老鼠"); ani.move("飞"); } }
public class Test1 { public static void main(String[] args){ // 实例化person类,也就是创建它的对象 // int i = 0; // String s = “” Person person=new Person();//声明一个person类型,实例化 person.name ="张三";//给对象赋值 person.showName();//对象调用方法 int i=person.getAge();//返回值为默认 System.out.println(i); person.age=20;//给对象age赋值 int a =person.getAge(); System.out.println(a); //实例化动物类的对象 Animal ani =new Animal(); ani.eat("老鼠"); ani.move("飞"); } }
7.类的成员之一 :属性(语法格式:修饰符 类型 属性名 = 初值【private:只能由该类的方法访问】public 可被该类以外的属性方法访问,类型任何基本类型,int boolean )
1)成员变量和局部变量的区别(实例变量只能在实例化的对象中可以使用)
public class Person1 { { // 这是代码块 int i = 0; } public String name = "zhangsan";//共有的其他地方也能使用 private int age;//私有的 可以在奔雷的方法中使用 //修饰符可以用来修饰变量,可以指明变量是共有还是私有的,私有的不能通过对象,属的方式调用 // 实例化变量就是说在类实例化成对象之后才能使用的 public static String sex ="男"; //static 的意思是静态的不需要实例化对象就可用 // 直接就可通过类名属性这样方法直接调用这样的变量叫做类变量 public void showAge(){ System.out.println(age); } }
8.类的成员之二:方法
1)语法格式(修饰符 返回值类型 方法名(参数列表){方法体语句;})
说明:修饰符:public private,protected等。
返回值类型:return 语句传递返回值,没有返回值:void.
public class Student { public String name; public int age; public String course; public String interest; public void showInfo(){ System.out.println("姓名:"+name); System.out.println("年龄:"+age); System.out.println("课程:"+course); System.out.println("兴趣:"+interest); } } 测试 Student stu=new Student(); stu.name="小明"; stu.age=18; stu.course="语文,数学,英语,历史"; stu.interest="打球,唱歌,看电影,街舞"; stu.showInfo();
2)方法调用(没有返回值得时候用关键字void表示,那么函数中的return语句如果在最后一行可以省略不写.注意【方法中不能再定义方法,同一个类中的方法可以直接用不用再去new实例化对象】)
public class Test1 { public static void main(String[] args){ Test1 t1=new Test1(); int area =t1.getArea(2,3); System.out.println(area); } public int getArea(int x,int y){ return x*y; } }
9.对象的产生成员变量类型及其初始值
byte(0) short(0) int(0) long(0L) float0.0F) double(0.0D) char('\u0000'表示为空) boolean(false) 引用类型String(null)
Student stu1=new Student(); stu1.showInfo();//直接打印属性返回初始化值
匿名对象(一次使用不管了)
new Student().showInfo();//匿名对象
练习
(1)创建一个person2 属性(name age sex)调用study输出字符串studying调用showAge()方法显示age值,调用addAge()方法给对象age的属性增加两岁
第一步
public class Person2 { public String name; public int age; public int sex; public void study(){ System.out.println("studying"); } public void showAge(){ System.out.println(age); } public int addAge(int i) { age += i; return age; } }
第二部测试输出
public class Test1 { public static void main(String[] args){
Person2 p=new Person2(); p.name="luxi"; p.age=11; p.sex=1; p.study(); int b = p.addAge(2); System.out.println("b:"+b+"p.age:"+p.age);} }
(2)圆的面积计算
1)类的建立
public class Clircle { public double area(double r){ return 3.14*r*r; } }
2)测试输出
public class Test1 { public static void main(String[] args){
double area1 = new Clircle().area(2);
System.out.println("半径为2的圆输出的面积是:"+area1);
}
10.方法的重载(overload)(在同一个类中,允许存在一个以上的同名方法,只要他们的参数个或者参数类型不同即可数)以下三个类型的方法对比理解
public int add(int x ,int y){ return x+y; } public int add(int m ,int n){ return m+n; }//与名称无关不能这样共存重复了方法 public double add(int x ,double y){ return x+y; } public int add(int x ,int y,int z){ return x+y+z; }
例题
1.写程序定义三个重载方法并且调用方法名mOL;三个方法分别接收一个int参数,两个int参数,一个字符串分别执行平方相乘并输出结果和字符串信息,在main中调用三个方法
public class Test1 {
public static void main(String[] args){
Test1 t0 =new Test1();
t0.mOl(2);
t0.mOl(2,3);
t0.mOl("重载方法mol");}
public void mOl(int i ){ System.out.println(i*i*i); } public void mOl(int x,int y ){ System.out.println(x*y); } public void mOl(String s){ System.out.println(s); }
}
2.用重载的方法写三个分别两个int值中的最大值,两个double中的最大值,三个double的最大值
public class Test1 {
public static void main(String[] args){
Test1 t2 =new Test1(); t2.max(2,3); t2.max(2.2,3.6); t2.max(1.2,2.6,3.9);}
public void max(int x,int y ){if (x>y) {System.out.println("最大值是:"+x);}else {System.out.println("最大值是:"+y);} } public void max(double x,double y ){double res =0; if (x>y) {res=x;}else {res=y;}System.out.println("最大值是:"+res); } public void max(double x,double y,double z ){ double res = 0; if (x>y) { if (x>z) {res=x;}else{res=z;}} else { if (y>z){res=y;}else{res=z; } } System.out.println("最大值是:"+res); }
}
ok今天的快乐就到此为止了,总的来说今天的知识比较有趣好玩了,希望明天也这么快乐的学习吧!!!gogogo!