您的位置:首页 > 编程语言 > Java开发

java(5)面向对象(第一天)

2017-12-12 10:05 197 查看
声明:由于学习所用环境为JDK1.8,java所有代码均在JDK1.8的环境下测试通过,如果环境发生变化,可能会有错误!

一、什么是面向对象编程(OOP)

1、面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种编程思想,它将对象作为问解决问题的基本元素, 利用对象和对象之间的相互作用来设计程序。

面向对象思想把整个世界看成由各种对象来组成的。这些对象具有属性和行为(方法)。
个人总结:面向对象是一种编程思想。类是模板,是一个抽象的概念,描述一类对象的行为和状态。对象是具体的实体,由一组属性和行为(方法)组成。

2、面向对象思考问题的方式

(1)先考虑问题中涉及到的对象有哪些;

(2)对象有哪些属性和方法;

(3)对象之间有哪些联系。

二、类与对象

1、类:类是一个模板,它描述一类对象的行为和状态。类是一个抽象的概念。

2、对象:用来描述客观事物的一个实体,由一组属性和行为构成。对象是实体,也称为类的实例化。

三、类与对象的创建

1、定义类的语法:

[访问修饰符] class 类名{

    //属性和方法的声明

}

eg:public class Person {

    String name;        //姓名

    boolean sex;        //性别

    int age;                //年龄

    public void tread(){ 

        System.out.println(“四处走动…”);

    }

}

2、类中成员变量的定义

定义成员变量的语法:
 [访问修饰符]  数据类型  成员变量名 [= 初始值];

成员变量的类型可以使用Java语言中的任何一种数据类型(包括基本类型和引用类型)。在定义成员变量时可以对其进行初始化。如果不对其初始化,Java会使用默认的值对其进行初始化。成员变量的作用域是整个类体。

3、回顾-局部变量和成员变量



4、类中方法的定义

语法格式:

[访问修饰符] 返回值类型 方法名(形参列表){

 //方法的具体代码

}

5、对象的产生和使用

(1)使用new关键字调用类的构造方法就可以创建一个对象。

(2)构造方法:方法名与类名相同,没有返回值,并且不加void。

                      构造方法的作用在于构造并初始化对象。

                      每个类中都至少包含一个构造方法。

(3)构造方法的分类:有参构造方法和默认构造方法(无参构造方法)。

(4)默认构造方法

默认构造方法就是无参构造方法。java的类每个都必须有构造方法,如果没有定义构造方法,java编译器会提供一个默认的构造方法

eg:public class Dog{

     String name;

     int age;

    public void bark(){

   System.out.printIn("汪汪汪!");

}

public static void main(){

   Dog dog=new Dog();  //用new来调用该类的默认构造方法来创建对象

  dog.bark();

}

}

如果类中已经定义了构造方法,那么编译器将不再提供默认构造方法。

eg:public class Test {

    String name;

    String sex;

    int age;

    public void getTest(){

        System.out.println("输出:"+name+sex+age);

    }

    public Test(String name, String sex, int age) {

        super();

        this.name = name;

        this.sex = sex;

        this.age = age;

    }

    public static void main(String[] args) {

    Test test=new Test();  //编译报错,无参构造方法不存在

    }

}

(5)类的实例化内存结构图



通过上图可以看出:引用类型存放在栈内存中,而数据存放在堆内存中。

四、方法重载

方法重载:同一类中,方法名相同,参数列表不同(参数类型不同,参数顺序不同,参数个数不同)

eg:public class Person {

   String name;

   int age;

   String sex;

   public Person(){

       

   }

   

   public Person(String n,int a){

       name=n;

       age=a;

   }

   

   public Person(String n,int a,String s){

       name=n;

       age=a;

       sex=s;

   }

   

   public void say(){

       System.out.println("我叫"+name+",今年"+age+"岁了;性别:"+sex);

   }

   

}

五、栈

栈是一种可以实现"先进后出"的存储结构。

当栈为空时,栈顶指针top->-1;

入栈时,top指针先加1,再存入数据;

出栈时,先读数据,top指针减1;

eg:public class MyStack {

    int top;

    char[] a;

    int max;

    public MyStack(){

        

    }

    public MyStack(int m){

        max=m;

        top=-1;

        a=new char[max];

    }

    

    //入栈

    public void push(char c){

        if(isFull()){

            System.out.print("栈已满");

    }else{

        a[++top]=c;

        }

    }

    

    //出栈

    public char pop(){

        if(isEmpty()){

            System.out.print("栈已空");

            return (char)-1;

        }else {

            return a[top--];

        }

    }

    

    //判断栈是否为空

    public boolean isEmpty(){

        return top==-1;

    }

    

    //判断栈是否已满

    public boolean isFull(){

        return top==max-1;

    }

    

}

测试代码

public class TestStack {

    public static void main(String[] args) {

         String str="西安理工大学";

        MyStack stack=new MyStack(100);

       for (int i = 0; i < str.length(); i++) {

        stack.push(str.charAt(i));

    }

       System.out.print("反转后的字符:");

       while(!stack.isEmpty()){

          System.out.print(stack.pop());

       }

     

    }

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: