目录
面向对象--属性和方法
一、类
写法:
class 类名{
}
class book{
public String name ; //成员变量
public String getName(){
id=0 ; //局部变量
}
public String setName(){
this.name;
}
}
二.属性
package day01;
public class Person {
/*属性定义
* 属性的组成:
* 修饰符 数据类型 属性名称[=值];
*/
public String name;
public int id;
public char sex;
/*方法--描述可以做的事情
*
*/
public static void main(String[] args) {
//主方法不属于任何的一个类,
//创建一个对象,并把这个对象赋值给person(就是实例化一个对象)
Person person=new Person();
Person person2=new Person();//可以实例化多个对象
//属性方法的使用,通过 对象.属性的方法来进行调用
person.name="张三";
person.id=2018;
person.sex ='男';
//输出上述的信息
System.out.println("姓名:"+person.name+"id:"+person.id+"性别"+person.sex);
}
}
三.方法
1.方法的语法结构:
语法:
权限修饰符 [特征修饰符] 返回值类型 方法名(参数列表)[抛出异常]{方法体}
2. 方法分为:
无参数无返回值
无参数有返回值
有参数无返回值
有参数有返回值
package day01;
import java.util.Scanner;
public class Person {
/*属性定义
* 属性的组成:
* 修饰符 数据类型 属性名称[=值];
*/
public String name;
public int id;
public char sex;
/*类中的方法-->做一件事情
* 语法:
* 权限修饰符 [特征修饰符] 返回值类型 方法名(参数列表)[抛出异常]{方法体}
*/
//无参无返回值的方法
public void eat() {
System.out.println("已调用无参无返回值的方法");
}
//无参数有返回值
public String tellName() {
System.out.println("已调用无参有返回值的方法");
return "张三";
}
//有参数无返回值
public void chifanfan(String something) {
System.out.println("吃了一碗"+something);
}
//有参数有返回值
public String buyDrink(int money) {
if(money>5) {
return "肥仔快乐水";
}else {
return "矿泉水";
}
}
public static void main(String[] args) {
//主方法不属于任何的一个类,
//1.创建一个对象,并把这个对象赋值给person(就是实例化一个对象)
Person person=new Person();
//2.属性和方法的使用,通过 对象.属性或方法来进行调用
person.eat();//调用无返回值无参数方法
person.name="王五";//属性调用
/*调用有返回值无参数的方法
* 需要一个变量来接收,变量的类型与返回值的类型要一致
*类似:
*Scanner input =new Scanner(System.in);
String name=input.nextLine();
*
* */
String myName=person.tellName();//调用有返回值无参数的方法
//有参数无返回值调用
person.chifanfan("大米饭");
//有参数有返回值方法的调用
//有返回值需要用变量来接收
String drinkName=person.buyDrink(10);
System.out.println("买了一瓶"+drinkName);
}
}
3.方法的小实例
package day01;
public class lianXi {
//设计一个方法,来画星星
//无参无返回值方法
public void drawStar() {
for(int i=1;i<=4;i++) {
for(int j=1;i<=i;j++) {
System.out.println("*");
}
}
}
//有参数无返回值方法
public void drawStar1(int line) {
for(int i=1;i<=line;i++) {
for(int j=1;i<=i;j++) {
System.out.println("*");
}
}
}
public static void main(String[] args) {
lianXi star=new lianXi();
//无参无返回值方法调用
star.drawStar();
//有参数无返回值方法
star.drawStar1(7);
}
}
四、方法重载
类中的一组方法,方法名相同,但是参数列表不同
package day02;
public class overload {
//println就是方法重载的一种体现
/*text方法产生的方法重载
* 参数列表不同
* */
public void text() {
//相同方法不同的参数,产生不同的结果
System.out.println(2);
System.out.println("王五");
}
public void text(int i) {
System.out.println(i);
}
public void text(double i) {
System.out.println(i);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
overload t=new overload();
//方法重载的调用
t.text();
t.text(3);
t.text(3.14);
}
}
package day02;
public class overload {
//println就是方法重载的一种体现
/*text方法产生的方法重载
* 参数列表不同
* */
public void text() {
//相同方法不同的参数,产生不同的结果
System.out.println(2);
System.out.println("王五");
}
public void text(int i) {
System.out.println(i);
}
public void text(double i) {
System.out.println(i);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
overload t=new overload();
//方法重载的调用
t.text();
t.text(3);
t.text(3.14);
}
}
五、构造方法+块+this用法
1.构造方法:
作用:只有一个,构造当前类的对象
写法:权限修饰符 方法名称(参数列表){
//方法名与类名相同
//无返回值类型,但可以有返回值,返回值是一个对象
}
2.构造方法调用:
类名 变量=new 类名();
person p=new person();
person p=new person("abc");
3.构造方法特点:
①每一个类中都有一个构造方法
若自己没有在类中定义,系统会提供一个无参数的构造方法
若自己已定义构造方法,则之前系统默认的则被覆盖,只有自己写的
②构造方法可以重载,
4.什么时候需要设计构造方法
在创建对象的同时,还想做一些其他的事情。
5.this用法
①作用:属性和变量重名时,需要使用this来指代进行区分
②调用:this.属性
this.方法
放在任意位置都可以调用
注意:
一般方法不能调用构造方法,认为构造方法早于一般方法
构造方法可以调用一般方法
在构造方法内调另一个构造方法,直接使用this()且只能放在第一句
6.程序块(代码块)
特点:
①参数、无返回值、无名称、无修饰符
②不能重载
③一个类中可以写多个块
作用:跟普通方法一样
写法:变成一个大括号
{
}
调用:每一次我们调用构造方法之前,系统会帮我们自动的调用一次程序块。
package day02;
public class gouzhaoFfa {
public String name;
public int age;
public String sex;
//普通的方法
public void eat() {
//一般方法不能调用构造方法,认为构造方法早于一般方法
//this();
System.out.println("吃饭饭");
}
//构造方法,特征修饰符,返回值类型没有
public gouzhaoFfa() {
//构造方法可以调用一般方法
eat();
System.out.println("这是一个构造方法");
}
public gouzhaoFfa(String name,int age,String sex) {
//构造方法中调用构造方法,只能方法第一句
this();
//this调用属性,指代最上方定义的属性
this.name=name;
this.age=age;
this.sex=sex;
}
public gouzhaoFfa(String x) {
System.out.println("构造方法可以重载"+x);
}
//程序块
//每一次我们调用构造方法之前,系统会帮我们自动的调用一次程序块。
{
System.out.println("俺是一个程序块");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//构造方法的调用
gouzhaoFfa p=new gouzhaoFfa();
gouzhaoFfa p1=new gouzhaoFfa("abc");
gouzhaoFfa p2=new gouzhaoFfa("张三",17,"男");
System.out.println("名字"+p2.name+"年龄"+p2.age+"性别"+p2.sex);
}
}
六、总结:类中四个成员
1.属性
2.方法
3.构造方法
4.程序块