Java语言基础(11)

java

1 构造方法

  构造方法是一种特殊的方法,只有在创建对象的时候才被调用,用来执行初始化的操作,比如给属性赋值...

  1) 构造方法名字跟类名一致,没有返回值也就没有返回值类型
  2) 格式:
    类名(参数列表){
      方法体
    }
  3) 创建对象的标准格式:
    类名 对象名 = new 构造方法
    案例:Demo1

public class Demo11 {

public static void main(String[] args) {

Math2 math = new Math2();

math.sub(100, 50);

math.sub(100.1, 2.3);

math.sub(2.99, 1);

math.sub(100.1, 100);

}

}

class Math2{

void sub(int num1,int num2){

int result = num1 - num2;

System.out.println("result = "+result);

}

void sub(double num1,int num2){

double result = num1 - num2;

System.out.println("result = "+result);

}

void sub(int num1,double num2){

double result = num1 - num2;

System.out.println("result = "+result);

}

void sub(double num1,double num2){

double result = num1 - num2;

System.out.println("result = "+result);

}

}

public class Demo2 {

public static void main(String[] args) {

User user1 =

new User("刘备",42,"abc","成都",

"bei@126.com");

user1.show();

User user2 =

new User("黄忠",56,"123456","襄阳",

"zhong@163.com");

user2.show();

}

}

class User{

//属性

String name;

int age;

String password;

String address;

String email;

//构造方法

User(String name1,int age1,

String password1,String address1,

String email1){

name = name1;

age = age1;

password = password1;

address = address1;

email = email1;

}

//方法

void show(){

System.out.println(name+","+age+","

+password+","+address+","+

email);

}

}

  4) 如果该类中不编写构造方法,则系统默认提供一个空参的构造方法;反之如果编写了构造方法,则会覆盖系统默认提供的空参的构造方法。
    案例:Demo3

public class Demo3 {

public static void main(String[] args) {

//类名 对象名 = new 构造方法

Foo foo = new Foo();

}

}

//如果该类中没有编写构造方法,则系统默认提供一个空参

//构造方法;如果该类中编写了构造方法,则会覆盖系统

//默认提供的空参的构造方法。

class Foo{

//Foo(){系统默认提供空参(没有参数)的构造方法

//}

}

public class Demo4 {

public static void main(String[] args) {

// Koo koo = new Koo();//默认空参构造方法

//报错,在Koo的内部又编写一个带两个参数的构造方法,

//会覆盖系统提供的空参的构造方法。在Koo内部只有编写

//的带两个参数的构造方法。

Koo koo2 = new Koo("张三",21);

}

}

class Koo{

String name;

int age;

Koo(String name1,int age1){

name = name1;

age = age1;

}

}

public class Demo5 {

public static void main(String[] args) {

Box1 box = new Box1(100,20,90);

box.show();

box.showTiji();

Box1 box2 = new Box1(200,100,150);

box2.show();

box2.showTiji();

}

}

class Box1{

//属性

int length;

int width;

int height;

//构造方法

Box1(int length1,int width1,int height1){

length = length1;

width = width1;

height = height1;

}

//方法

void show(){

System.out.println(length+","+width

+","+height);

}

void showTiji(){

int result = length * width * height;

System.out.println("体积是"+result);

}

}

  5) 在企业中建议,构造方法中参数的名字跟要赋值的属性名最好一致,这样对应关系更加的清楚。
    this.属性名:指代当前的属性
    class Person{
      //属性
      String name;
      int age;
      double salary;
      String address;
      //构造方法
      Person(String name,int age,double salary,
      String address){
        this.name = name;
        // 属性 参数
        this.age = age;
        this.salary = salary;
        this.address = address;
      }
    }
    案例:Demo6

public class Demo6 {

public static void main(String[] args) {

Person2 p =

new Person2("李白",31,20000.1);

p.show();

}

}

class Person2{

//属性:

String name;

int age;

double salary;

//构造方法:

Person2(String name,int age,

double salary){

this.name = name;

this.age = age;

this.salary = salary;

// 属性 参数

}

//方法:void show():输出每一个属性值

void show(){

System.out.println(name+","+age+","

+salary);

}

}

public class Demo7 {

public static void main(String[] args) {

User2 user =

new User2("张三丰","abc",

99,"道士","13555555555");

user.showAll();

}

}

class User2{

//属性

String name;

String password;

int age;

String job;

String phone;

//构造方法

User2(String name,String password,

int age,String job,String phone){

this.name = name;

this.password = password;

this.age = age;

this.job = job;

this.phone = phone;

}

//方法

void showAll(){

System.out.println(name+","+password

+","+age+","+job+","+phone);

}

}

public class Demo8 {

public static void main(String[] args) {

Manager manager =

new Manager("张居正",32,

2000000.1,1000000.1,"北京");

manager.show();

manager.showYearSal();

}

}

class Manager{

//属性

String name;

int age;

double salary;

double comm;

String address;

//构造方法

Manager(String name,int age,

double salary,double comm,

String address){

this.name = name;

this.age = age;

this.salary = salary;

this.comm = comm;

this.address = address;

}

//方法

void show(){

System.out.println(name+","+age+","

+salary+","+comm+","+address);

}

void showYearSal(){

double result = salary*12+comm;

System.out.println(name+"的年薪是"+

result);

}

}

public class Demo9 {

public static void main(String[] args) {

Car car =

new Car("哥的奥迪","666666","内敛奢华",

"黑色",2000000000.1);

car.show();

car.start();

car.run();

car.stop();

}

}

class Car{

//属性

String name;

String no;

String type;

String color;

double price;

int speed=0;

//构造方法

Car(String name,String no,String type,

String color,double price){

this.name = name;

this.no = no;

this.type = type;

this.color = color;

this.price = price;

}

//方法

void show(){

System.out.println(name+","+no+","+

type+","+color+","+price+

","+speed);

}

void start(){

speed = 100;

System.out.println(name+"启动了");

}

void run(){

System.out.println(name+"在行驶," +

"当前的速度是"+speed);

}

void stop(){

speed = 0;

System.out.println(name+"刹车了," +

"当前的速度是"+speed);

}

}

    总结:构造方法是一种特殊的方法,只有在创建对象的时候才被调用,用来执行初始化的操作,比如给属性赋值...构造方法的名字跟类名一致,没有返回值类型。

2 方法重载

  在一个类的内部,方法名相同,参数不同的多个方法。
  案例:Demo10

public class Demo10 {

public static void main(String[] args) {

/*

Math1 math = new Math1();

math.add3(1.1, 200);

math.add4(2.2,5.3);

math.add1(300, 500);

math.add2(1000, 2.2);

*/

Math1 math = new Math1();

math.add(100, 100);

math.add(200, 1.66);

math.add(10.1, 1000);

math.add(2.6, 3.3);

}

}

class Math1{

void add(int num1,int num2){

int sum = num1 + num2;

System.out.println(sum);

}

void add(int num1,double num2){

double sum = num1 + num2;

System.out.println(sum);

}

void add(double num1,int num2){

double sum = num1 + num2;

System.out.println(sum);

}

void add(double num1,double num2){

double sum = num1 + num2;

System.out.println(sum);

}

}

public class Demo11 {

public static void main(String[] args) {

Math2 math = new Math2();

math.sub(100, 50);

math.sub(100.1, 2.3);

math.sub(2.99, 1);

math.sub(100.1, 100);

}

}

class Math2{

void sub(int num1,int num2){

int result = num1 - num2;

System.out.println("result = "+result);

}

void sub(double num1,int num2){

double result = num1 - num2;

System.out.println("result = "+result);

}

void sub(int num1,double num2){

double result = num1 - num2;

System.out.println("result = "+result);

}

void sub(double num1,double num2){

double result = num1 - num2;

System.out.println("result = "+result);

}

}

  1)编写类的方法时候,可以把功能相似的方法起同一个名字,参数要不同,通过参数区分开每一个方法,用户只需要记住一个名字,就可以调用相似功能的多个方法。
  2)参数不同:参数类型或者个数必须有一个不同,跟形参的名字无关。
  3)方法重载的好处:方法重载并没有简化代码的编写,但是用户只需要记住一个名字,就可以调用相似功能的多个方法,简少用户的记忆量,方便用户调用方法。
  4)方法重载属于多态的一种。
    多态:多态是面向对象的编程思想之一,事物在不同的情况下有不同的表现。
    eg:花朵,花生,花心,花钱
  5)Sun公司编写的工具类,经常使用到方法重载,方便用户来访问这些方法,用户只要记住一个名字,就可以调用相似功能的多个方法。
    System.out.println(100);
    System.out.println(1.66);
    System.out.println(false);
    System.out.println('中');
    System.out.println("今天风很大");
    案例:Demo12

public class Demo12 {

public static void main(String[] args) {

Kongtiao kt =

new Kongtiao("美的","柜式",

20000.1,"白色",25);

kt.show();

kt.cool();

kt.cool(5);

kt.hot();

kt.hot(3);

}

}

class Kongtiao{

//属性

String name;

String type;

double price;

String color;

int degree;

//构造方法

Kongtiao(String name,String type,

double price,String color,

int degree){

this.name = name;

this.type = type;

this.price = price;

this.color = color;

this.degree = degree;

}

//方法

void show(){

System.out.println(name+","+type+","

+price+","+color+","+degree);

}

void hot(){

degree++;

System.out.println(name+"升高1度以后,"

+"当前的温度是"+degree);

}

void hot(int degree){

this.degree = this.degree + degree;

System.out.println(name+"升高"+degree

+"度以后,当前的温度"+this.degree);

}

void cool(){

degree--;

System.out.println(name+"降低1度以后,"

+"当前的温度是"+degree);

}

void cool(int degree){

this.degree = this.degree - degree;

System.out.println(name+"降低"+degree

+"度以后,当前的温度是"+this.degree);

}

}

public class Demo13 {

public static void main(String[] args) {

Zoo1 zoo = new Zoo1();

zoo.f1();

zoo.f2(10);

}

}

//如果一个方法中的参数名字跟属性一致,在该方法中,

//必须使用this.属性名,来指代当前的属性,如果不加

//this关键字,就是参数

class Zoo1{

//属性

int num1 = 100;

//方法

void f1(){

System.out.println("属性num1的值是"

+num1);

}

void f2(int num1){

num1 = 1000;//参数

System.out.println("参数num1的值是"

+num1);

//this.属性名:指代当前的属性

System.out.println("属性num1的值是"

+this.num1);

}

}

以上是 Java语言基础(11) 的全部内容, 来源链接: utcz.com/z/393755.html

回到顶部